使用GeckoFX网页浏览器,是否可以通过这样的JavaScript传递GeckoElement,
WebBrowser.Navigate("javascript:void("+ele.DomObject+".onclick())");
我通过JavaScript选择DOM元素(这很好)atm,但我有c#中的元素。
答案 0 :(得分:1)
不幸的是,元素不能像那样传递给javascript。
但是,WebBrowser.Navigate调用是不必要的,并且会导致不必要的页面变量丢失。
为了完整起见,我发布了一个片段 - 为这个场合长时间啰嗦;) - 注入javascript,然后通过button.click()处理程序从自动按钮点击调用它,而无需浏览浏览器运行它。
DOM.GeckoScriptElement script = Document.CreateElement("script").AsScriptElement();
script.Type = "text/javascript";
script.Text = "function doAlert(){ alert('My alert - fired by automating a button click on the [Automated Button]'); }";
Document.Body.AppendChild(script);
script = Document.CreateElement("script").AsScriptElement();
script.Type = "text/javascript";
script.Text = "function callDoAlert(id){ var el = document.getElementById(id); el.click(); }";
Document.Body.AppendChild(script);
DOM.GeckoInputElement button = Document.CreateElement("input").AsInputElement();
button.Type = "button";
button.Id = "myButton";
button.Value = "Automated Button";
button.SetAttribute("onclick", "javascript:doAlert();");
Document.Body.AppendChild(button);
DOM.GeckoInputElement button2 = Document.CreateElement("input").AsInputElement();
button2.Type = "button";
button2.Id = "myOtherButton";
button2.Value = "Press Me";
button2.SetAttribute("onclick", "javascript:document.getElementById('myButton').click();");
Document.Body.AppendChild(button2);
//uncomment to fully automate without the <webbrowser>.Navigate("javascript:.."); hack
//button2.click();
我不确定这个片段会直接帮助你,因为它主要集中在使用控件的GFXe版本,但我相信它会指向一个比更好的方向
WebBrowser.Navigate( “JavaScript的:hack.goesHere()”);特技。