11
我是ASP.NET和C#項目的一部分。我們正在努力使我們的asp.net門戶Google搜索引擎友好(https://developers.google.com/webmasters/ajax-crawling/)。我們網站中的網頁是動態生成的,DOM使用JavaScript進行修改,因此當Google搜索引擎發送請求時,我們使用NHTML生成快照(服務器端)。它生成HTML快照,但問題是當頁面中存在腳本錯誤時,它返回部分呈現的頁面(部分呈現由頁面JavaScript修改的內容)。頁面在瀏覽器中完美工作。有沒有辦法強制NHTMLUNIT忽略頁面JavaScript錯誤並繼續執行腳本?
我嘗試以下選項
ThrowExceptionOnScriptError = false,
ThrowExceptionOnFailingStatusCode = false
,但沒有運氣。
有沒有辦法強制NHtmlUnit忽略頁面錯誤並繼續執行?
以下是代碼
// 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;
我不知道@ RAM的情況,但我得到了我的啓用。事情是,我不確定這是一個[N] HtmlUnit問題,而不是一個jQuery問題,因爲它運行在一個無頭瀏覽器中。它可能取決於HtmlUnit沒有提供的東西(比如窗口對象,或者瀏覽器本身提供的其他東西)。 – Allov
是的,我啓用了JavaScript。頁面中的JavaScript代碼會引發異常,導致NHTMLUNIT停止執行,從而使頁面部分呈現。相同的JavaScript在瀏覽器中工作並呈現整個頁面。 – RAM