簡體   English   中英

在awesomium中執行javascript以單擊div

[英]executing javascript in awesomium to click on a div

我在C#winforms應用程序中使用Awesomium來點擊網頁內的div。

如果您直接在谷歌瀏覽器中鍵入以下腳本可以正常工作:

javascript: document.getElementById('ac_play').click();

但是當我嘗試使用以下兩種方法在awesomium中執行它時:

webControl1.ExecuteJavascript("document.getElementById('ac_play').click();");

或這個:

webControl1.LoadURL("javascript: document.getElementById('ac_play').click();");

它不起作用。 這讓我覺得 - Awesomium是否支持“div點擊”? 或者也許還有其他原因導致它不起作用?

我也嘗試過執行代碼:

  • 在LoadCompleted事件上(以確保完全加載頁面)
  • 通過在“addressBox1”中手動輸入腳本(本機awesomium“地址欄”控件)

像往常一樣 - 沒有任何工作。

編輯:

我在GeckoFX中測試了相同的javascript,它也沒有在那里工作..任何解決方法?

EDIT2

Standart WebBrowser控件完美地執行腳本! (雖然它使用IE5左右......這就是為什么我希望看到Awesomium解決方案正常工作)。

PS它正在webcontrol工作,現在不是;(我如何重置它?PPS我刪除了IE中的緩存但是使用標准WebBrowser太不可靠了..

請記住,您必須等待DocumentReady事件並將DocumentReadyState作為Loaded (未Ready - 因為之后Awesomium尚未准備就緒)

private void WebControl_DocumentReady(object sender, DocumentReadyEventArgs e)
{
    if (e.ReadyState != DocumentReadyState.Loaded) return;
    //Here ExecuteJavascript should work
}
public void JsFireEvent(string getElementQuery, string eventName)
{
    webControl1.ExecuteJavascript(@"
                        function fireEvent(element,event) {
                            var evt = document.createEvent('HTMLEvents');
                            evt.initEvent(event, true, true ); // event type,bubbling,cancelable
                            element.dispatchEvent(evt);                                 
                        }
                        " + String.Format("fireEvent({0}, '{1}');", getElementQuery, eventName));
}

JsFireEvent("document.getElementById('ac_play')", "click");

鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM