Hur injicerar man Javascript i WebBrowser-kontroll?

Hur injicerar man Javascript i WebBrowser-kontroll?

Av någon anledning fungerade inte Richards lösning hos mig (insertAdjacentText misslyckades med ett undantag). Detta verkar dock fungera:

HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0];
HtmlElement scriptEl = webBrowser1.Document.CreateElement("script");
IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
element.text = "function sayHello() { alert('hello') }";
head.AppendChild(scriptEl);
webBrowser1.Document.InvokeScript("sayHello");

Det här svaret förklarar hur du får IHTMLScriptElement gränssnitt till ditt projekt.


HtmlDocument doc = browser.Document;
HtmlElement head = doc.GetElementsByTagName("head")[0];
HtmlElement s = doc.CreateElement("script");
s.SetAttribute("text","function sayHello() { alert('hello'); }");
head.AppendChild(s);
browser.Document.InvokeScript("sayHello");

(testad i .NET 4 / Windows Forms-appen)

Edit:Fixat ärendeproblem i funktionsuppsättningen.


Här är det enklaste sättet jag hittade efter att ha arbetat med det här:

string javascript = "alert('Hello');";
// or any combination of your JavaScript commands
// (including function calls, variables... etc)

// WebBrowser webBrowser1 is what you are using for your web browser
webBrowser1.Document.InvokeScript("eval", new object[] { javascript });

Vilken global JavaScript-funktion eval(str) gör är att analysera och exekvera allt som är skrivet i str. Kolla w3schools ref här.