Передача DOM-элементов GeckoFX в вызовы навигации JavaScript - PullRequest
0 голосов
/ 12 декабря 2010

с помощью веб-браузера GeckoFX, возможно ли передать GeckoElement через JavaScript, например,

WebBrowser.Navigate("javascript:void("+ele.DomObject+".onclick())");

Я выбираю элемент DOM через JavaScript (это нормально работает), но у меня есть элемент в c #.

Ответы [ 2 ]

1 голос
/ 20 декабря 2010

К сожалению, элементы не могут быть переданы в 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 ()");обмануть.

0 голосов
/ 11 ноября 2011

Вы можете сделать это с помощью следующего:

WebBrowser.Navigate("javascript:void(document.getElementById('"+button.Id+"').click())");
...