[英]How to get dynamically generated HTML by JavaScript of web page in C# or Windows forms?
[英]How to evaluate Javascript within C#? (need to get all links for a web page, including java-script generated ones)
背景:我必須下載帶有資源的網頁以供離線觀看,但是作為其中的一部分,我必須“重寫”URL以獲取與HTML網頁的鏈接,以便它們起作用。 這是更好的標准類型的鏈接,但我現在意識到有一些鏈接是由JavaScript動態創建的。
問題:我可以使用什么方法(甚至現有的庫)將帶有動態生成鏈接的網頁(從javascript)轉錄到具有正常非動態鏈接的網頁。 (那時我可以做我需要做的URL重寫)
筆記:
謝謝
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>
如果您沒有使用WebBrowser控件,那么您可以在JScript.NET中使用JScriptEvaluate方法,但您可能需要評估的不僅僅是一個簡單的表達式。 WebBrowser控件當然是更容易的路徑。
如果您使用的是WebBrowser控件,則可以很容易地從C#調用“eval”方法。
/// <summary>
/// Handles the Navigated event of the browser control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="T:WebBrowserNavigatedEventArgs"/> instance containing the
/// event data.</param>
private void browser_Navigated( object sender, WebBrowserNavigatedEventArgs e )
{
string codeToEval = "window.alert('blah')";
if ( browser.Document != null ) {
object window = browser.Document.Window.DomWindow;
if ( window != null ) {
Type windowType = window.GetType();
BindingFlags flags = BindingFlags.InvokeMethod | BindingFlags.Instance;
string[] args = { codeToEval, "JScript" };
windowType.InvokeMember( "[DispID=1165]", flags, null, window, args );
} // if
} // if
}
還有第三種選擇。 您可以隨時下載HTML頁面,而無需重寫URL,然后在向用戶顯示HTML的代碼中,您可以捕獲鏈接上的點擊並取消導航,而是導航到相應的“離線”鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.