在awesomium中执行javascript以单击div

时间:2012-08-23 09:19:39

标签: c# javascript winforms awesomium

我在C#winforms app中使用Awesomium点击网页内的div。

如果您直接在Google Chrome中输入以下脚本,则可以正常运行:

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

但是当我尝试使用以下任一项在awesomium中执行它时:

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

或者这个:

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

它不起作用。这让我觉得 - Awesomium是否支持“div点击”?或者也许还有另一个原因导致它无法正常工作?

我也尝试过执行代码:

  • on LoadCompleted事件(以确保页面完全加载)
  • 在“addressBox1”中手动输入脚本(本机awesomium“地址栏”控件)

像往常一样 - 没有任何工作。

修改

我在GeckoFX上测试了相同的javascript,它也没有在那里工作..任何解决方法?

EDIT2

Standart WebBrowser控件完美地执行脚本! (虽然它使用IE5左右......这就是为什么我希望看到Awesomium解决方案正常工作)。

P.S。它在webcontrol中工作,现在不是;(我该如何重置它? P.P.S.我删除了IE中的缓存,但使用标准的WebBrowser是不可靠的。

2 个答案:

答案 0 :(得分:1)

请记住,您必须等待DocumentReady DocumentReadyState事件LoadedReady(而不是private void WebControl_DocumentReady(object sender, DocumentReadyEventArgs e) { if (e.ReadyState != DocumentReadyState.Loaded) return; //Here ExecuteJavascript should work } - 因为然后Awesomium尚未准备就绪)

reduce

答案 1 :(得分:0)

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");

Link