3
背景:我必須下載帶有資源的網頁才能離線查看,但作爲這部分,我必須「重寫」鏈接的URL HTML網頁,所以他們的工作。這更好的是標準鏈接類型,但是我現在意識到有一些鏈接是由javascript動態創建的。如何在C#中評估Javascript? (需要獲取網頁的所有鏈接,包括java-script生成的鏈接)
問題:我可以使用什麼方法(甚至是現有的庫)來轉錄帶有動態生成的鏈接(從JavaScript)到具有正常非動態鏈接的網頁的網頁。 (如話,我可以做的URL重寫我需要做的)
注:
- 這是幾乎一樣,如果我需要有一個JavaScript解釋器庫,我通過頁面的HTML,然後它可能吐出生成的java代碼?然後我可以根據需要重寫鏈接(結果不會使用JavaScript動態方法)。
- 上下文是C#WinForms(3.5)應用程序。
感謝
PS。一些例子:
<script type="text/javascript">
<!--
document.write("<a href=\"/home.asp\" onMouseOver=\"MM_swapImage('tab_home','','/_includes/images/tab_home_.gif',1)\" onMouseOut=\"MM_swapImgRestore()\"><img src=\"/includes/images/tab_home.gif\" alt=\"Home\" name=\"tab_home\" width=\"45\" height=\"18\" border=\"0\" id=\"tab_home\"><\/a>");
if (window.document.location.pathname.indexOf("mysite.asp") != "-1") {
document.write("<a href=\"/mysite.asp\" onMouseOver=\"MM_swapImage('tab_my_site','','/_includes/images/tab_my_site_.gif',1)\" onMouseOut=\"MM_swapImgRestore()\"><img src=\"/_includes/images/tab_my_site_.gif\" alt=\"My Site\" name=\"tab_my_site\" width=\"76\" height=\"18\" border=\"0\" id=\"tab_my_site\"><\/a>");
}
else {
document.write("<a href=\"/mysite.asp\" onMouseOver=\"MM_swapImage('tab_my_site','','/_includes/images/tab_my_site_.gif',1)\" onMouseOut=\"MM_swapImgRestore()\"><img src=\"/_includes/images/tab_my_site.gif\" alt=\"My Site\" name=\"tab_my_site\" width=\"76\" height=\"18\" border=\"0\" id=\"tab_my_site\"><\/a>");
}
和
<script type="text/javascript">
var fo = new FlashObject("/homepage/ia/flash/hero/banner.swf?q=1", "hero", "642", "250", "8", "#ffffff");
fo.addParam("wmode", "transparent");
fo.addParam("allowScriptAccess", "always");
fo.addParam("base", "/homepage/ia/flash/hero/");
fo.write("flashContent");
</script>
和
<td width="1%">
<a href="javascript:checksubmit(this);"
onmouseover="MM_swapImage('but_srch_go','','/_includes/images/but_srch_go_.gif',1)"
onmouseout="MM_swapImgRestore()">
<img src="http://localhost:3000/sites/http://qheps.health.qld.gov.au/_includes/images/but_srch_go.gif" alt="Go" name="but_srch_go" width="57" height="40" border="0">
</a>
</td>
謝謝 - 我會研究這一點。那麼我是否可以使用這個控件而不必在表單中顯示呢?因爲它是針對不應該顯示給用戶的發動機罩下的例程。 – Greg
除了線程問題之外,是的,您可以使用WebBrowser控件,該控件完全自動化並隱藏,而不會向用戶顯示任何內容。它當然會比純HTTP請求慢,因爲它會經過DOM,渲染引擎和腳本引擎(這正是你想要的)。我想你也可以在沒有WebBrowser的情況下嘗試MSHTML對象模型。這兩個選項都需要你有一個STA線程,並且可能是一個消息循環,所以請確保在Winforms主線程中完成你的工作。 – Josh
嗯......只是執行jvascript本身呢?我將擁有頁面HTML +其他JS文件/文本頁面引用。事實上,你會認爲JavaScript引擎/庫只需要執行基本的字符串操作? – Greg