Как я могу переписать функцию jtascript btnSubmit_onclick на веб-странице, используя веб-браузер WPF? - PullRequest
0 голосов
/ 27 февраля 2009

Я работаю с элементом управления WPF WebBrowser, который отличается от версии WinForms, и многие рекомендации с этого превосходного веб-сайта просто не работают в WPF.

Как переписать функцию JavaScript btnSubmit_onclick() на веб-странице?

Эта функция генерирует диалоговое окно подтверждения (например, «Вы уверены?»), Которое я хочу обойти. По сути, я хочу добавить новую функцию btnSubmit_onclick(), которая заменит существующую, и я могу пропустить раздражающее диалоговое окно подтверждения. У меня есть доступ к MSHTML и всем объектам страницы, но я не могу вставить скрипт в заголовок страницы. Пока у меня есть:

mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)webBrowser.Document;
mshtml.IHTMLElementCollection heads = doc.all.tags("head") as mshtml.IHTMLElementCollection;
mshtml.IHTMLElement head = heads.item(null, 0) as mshtml.IHTMLElement;
mshtml.IHTMLElement se = doc.createElement("script") as mshtml.IHTMLElement;
se.innerHTML = "function btnSubmit_onclick() { alert('here we are'); }";

Но теперь мне нужно внедрить этот новый элемент сценария в объект head перед другими другими сценариями, и я надеюсь, что он запишет существующую функцию btnSubmit_onclick() ниже по течению.

Я неудачно попробовал head.injectAdjusentHTML, который отказывается вставлять любой скрипт в заголовок, даже если я использую свойство DEFER.

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 26 февраля 2011

Я не проверял это, просто предположение: Попробуйте это:

// For this code to work: add the Microsoft.mshtml .NET reference
mshtml.IHTMLDocument2 doc = WebBrowser1.Document as mshtml.IHTMLDocument2;
doc.parentWindow.execScript("document.body.onsubmit=new function(){ alert('here we are'); };");
1 голос
/ 18 июня 2010

Я думаю, вам нужно добавить его в конец головы, а не вводить его перед остальными. Я считаю, что javascript - это сделка с последним выигрышем.

...