如何在WebBrowser控件中注入Javascript?

我已经试过了:

string newScript = textBox1.Text;

HtmlElement head = browserCtrl.Document.GetElementsByTagName("head")[0];

HtmlElement scriptEl = browserCtrl.Document.CreateElement("script");

lblStatus.Text = scriptEl.GetType().ToString();

scriptEl.SetAttribute("type", "text/javascript");

head.AppendChild(scriptEl);

scriptEl.InnerHtml = "function sayHello() { alert('hello') }";

scriptEl.InnerHtml和scriptEl.InnerText都给出错误:

System.NotSupportedException: Property is not supported on this type of HtmlElement.

at System.Windows.Forms.HtmlElement.set_InnerHtml(String value)

at SForceApp.Form1.button1_Click(Object sender, EventArgs e) in d:\jsight\installs\SForceApp\SForceApp\Form1.cs:line 31

at System.Windows.Forms.Control.OnClick(EventArgs e)

at System.Windows.Forms.Button.OnClick(EventArgs e)

at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)

at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)

at System.Windows.Forms.Control.WndProc(Message& m)

at System.Windows.Forms.ButtonBase.WndProc(Message& m)

at System.Windows.Forms.Button.WndProc(Message& m)

at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)

at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)

at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

有没有一种简单的方法可以将脚本注入dom?

回答:

由于某种原因,Richard的解决方案对我而言不起作用(insertAdjacentText失败,并带有异常)。但是,这似乎可行:

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");

以上是 如何在WebBrowser控件中注入Javascript? 的全部内容, 来源链接: utcz.com/qa/409098.html

回到顶部