3

我在 C# winforms 应用程序中使用 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 clicks”?或者也许还有其他原因导致它不起作用?

我也尝试过执行代码:

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

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

编辑:

我已经在 GeckoFX 中测试了相同的 javascript,但它也无法在那里工作。有什么解决方法吗?

编辑2

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

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

4

2 回答 2

1

请记住,您必须使用as等待DocumentReady事件(不是- 因为那时 Awesomium 还没有准备好)DocumentReadyStateLoadedReady

private void WebControl_DocumentReady(object sender, DocumentReadyEventArgs e)
{
    if (e.ReadyState != DocumentReadyState.Loaded) return;
    //Here ExecuteJavascript should work
}
于 2015-09-04T09:35:52.573 回答
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");

关联

于 2013-12-16T17:39:57.043 回答