当前位置: 首页 > 面试题库 >

如何在WebBrowser控件中注入Javascript?

贝自怡
2023-03-14
问题内容

我已经试过了:

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


 类似资料:
  • 问题内容: 我正在使用自动化(即COM自动化)在Internet Explorer(9)中显示一些HTML: 出现Internet Explorer,显示我的html,其开头为: 注意: html5标准模式的加入文档类型html 除了文件不是ie9标准模式外;它处于ie8标准模式: 替代文字 我的问题是如何更新我的SpawnIEWithSource(String html)功能以使浏览器进入标准模

  • 本文向大家介绍如何将WebBrowser控件放入IE9的HTML标准中?,包括了如何将WebBrowser控件放入IE9的HTML标准中?的使用技巧和注意事项,需要的朋友参考一下 要将WebBrowser控件放入IE9标准,您需要在HTML网页中添加以下行- 您也可以在Internet Explorer 9中尝试- 您也可以尝试使用Microsoft Edge-

  • 问题内容: 我有一个ASP.NET页和一些自定义类,这些类可获取指定的网页,并返回此页面主体。 但是我需要的-它是DOM html而不是源代码,因为我通过jQuery在DOM上做了一些额外的操作。 问题答案: 这是我发现在运行javascript之后进入呈现的HTML(DOM)的一种解决方案: 将一个名为webBrowser1的WebBrowser控件放在Form1类的Form上。 [Form1.

  • 问题内容: 我仍然是Angularjs的新手。我想在控制器中动态注入服务(我创建的)的依赖项。 但是,当我对具有依赖项的服务进行编码时,出现此错误: 错误:未知提供程序:$ windowProvider <-$ window <-base64 这是控制器的代码。 此代码有效: 此代码不起作用: 另一个问题是服务与控制器位于同一模块中。如果模块具有依赖项,则无法使用(我的模块配置中具有$ route

  • 问题内容: 我可以将Java控件(SWT,Swing等)放在C#控件上吗? 我知道Web控件是可能的,但我不喜欢这种方式。 问题答案: 我重新检查了一下,看来IKVM当前在其AFT组件中没有足够的支持。我认为,执行所需操作的唯一方法是在具有隐藏主窗口的单独进程中运行java控件,并以某种方式将该控件的句柄传递给C#应用程序。 原始答案: 我不确定是否可以“添加”它,但是可以尝试以下方法: 有必要通

  • 我正在更新浏览器应用程序以支持Windows Phone8.1,但我注意到未引发事件。 null 适用于WP8和WP8.1的默认Windows Phone Internet Explorer应用程序 WP8应用程序中的WebBrowser控件。 这是窃听器吗?