首页 >web前端 >js教程 >如何在不使用 InnerHtml 的情况下将 JavaScript 注入 Web 浏览器控件?

如何在不使用 InnerHtml 的情况下将 JavaScript 注入 Web 浏览器控件?

Susan Sarandon
Susan Sarandon原创
2024-11-19 18:45:03364浏览

How to Inject JavaScript into a WebBrowser Control Without Using InnerHtml?

将 JavaScript 注入 Web 浏览器控件

问题:

我正在尝试注入JavaScript 脚本插入 WebBrowser 控件,但在设置脚本的 InnerHtml 属性时遇到错误 元素。有没有替代方法来实现这一点?

答案:

虽然原始尝试失败成功,但可以使用以下方法将脚本注入DOM:

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

说明:

  • 获取 IHTMLScriptElement 接口:

    • DomElement 属性公开底层 COM 对象。将其转换为 IHTMLScriptElement 可以访问文本属性。
  • 设置脚本文本:

    • 分配所需的 JavaScript 代码到正文
  • 调用脚本:

    • 在文档上调用 InvokeScript 来执行注入的脚本。

以上是如何在不使用 InnerHtml 的情况下将 JavaScript 注入 Web 浏览器控件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn