2013-04-12 11 views
11

私はASP.NETとC#プロジェクトの一部です。私たちはasp.netポータルのGoogle検索エンジンをフレンドリーにしようとしています(https://developers.google.com/webmasters/ajax-crawling/)。 GoogleのサイトのWebページは動的に生成され、DOMはJavaScriptで変更されるため、Google検索エンジンがリクエストを送信するときにNHTMLを使用してスナップショット(サーバー側)を生成します。 HTMLスナップショットが生成されますが、ページにスクリプトエラーがあると、部分的にレンダリングされたページが返されます(ページJavaScriptによって変更されるコンテンツは部分的にレンダリングされます)。ページはブラウザで完全に機能します。NHTMLUNITにページJavaScriptのエラーを無視させ、スクリプトを続行させる方法はありますか?

私は、次のオプションに

ThrowExceptionOnScriptError = false, 
ThrowExceptionOnFailingStatusCode = false 

しかし、運を試してみました。

強制的にNHtmlUnitがページエラーを無視して実行を継続する方法はありますか?

は、私は私が間違っている場合は申し訳ありませんが、JavaScriptを有効にしなかった気づいコード

// Create a webclient. 
    WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17) 
     { 
      ThrowExceptionOnScriptError = false, 
      ThrowExceptionOnFailingStatusCode = false 
     }; 

    webClient.WaitForBackgroundJavaScript(5000); 

    // Load the Page with the given URL. 
    HtmlPage htmlPage = webClient.GetHtmlPage(url); 

    // Return the page for the given URL as Text. 
    return htmlPage.WebResponse.ContentAsString; 

答えて

5
// Create a webclient. 
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17) 
    { 
     JavaScriptEnabled = true 
     ThrowExceptionOnScriptError = false, 
     ThrowExceptionOnFailingStatusCode = false, 
    }; 

webClient.WaitForBackgroundJavaScript(5000); 

HtmlPage htmlPage = webClient.GetHtmlPage(url); 

// Return the page for the given URL as Text. 
return htmlPage.WebResponse.ContentAsString; 

にあります。

+0

@ RAMのケースについてはわかりませんが、私は有効になっています。問題は、ヘッドレスブラウザ内で実行されるため、jQueryの問題ではなく[N] HtmlUnitの問題であるかどうかはわかりません。 HtmlUnitが提供していないもの(ウィンドウオブジェクトやブラウザ自体が提供するものなど)に依存する可能性があります。 – Allov

+0

はいJavaScriptを有効にしました。ページ内のJavaScriptコードによって例外がスローされ、NHTMLUNITの実行が停止され、ページが部分的にレンダリングされます。同じJavaScriptがブラウザで動作し、完全なページをレンダリングします。 – RAM

関連する問題