首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# WebBrowser控件中的Javascript在设计模式激活时未执行

C# WebBrowser控件中的Javascript在设计模式激活时未执行
EN

Stack Overflow用户
提问于 2015-09-18 10:30:36
回答 1查看 1.3K关注 0票数 1

解决方案:

当设计模式设置为"on“时,Javascript不会在webbrowser控件中执行,在我的示例中是:

代码语言:javascript
运行
复制
document = webbrowser.Document as HTMLDocument;
document.designMode = "On";

designmode属性停止了执行javascript的webbrowser控件,因此我将其更改为:

代码语言:javascript
运行
复制
document.body.setAttribute("contentEditable", "true");

现在已经执行了javascripts,并且仍然可以编辑document,所以这个简单的更改为我解决了问题。谢谢你的回复

原始问题:

我正在尝试用WebBrowser控件实现C#图形用户界面。在我称之为本地存储的HTML文件的Webbrowser中,文件总是存储在C:或D:上,它们不是在共享文件夹或类似的东西上。到目前为止一切都很好。

现在,我尝试将一些JavaScript添加到html中,其中包含一些基本的函数来编辑html表(Add,add等)。但是Javascript不是在webbrowser控件中执行的。我试着用IE打开文件,并被提示输入ActiveX内容,我告诉IE“允许阻止内容”,一切都很好。(我在webbrowser控件中没有得到提示。)现在的问题是:在way浏览器控件中“始终启用”任何类型的脚本,还是像IE那样以相同的方式提示?

当然,我搜索了Web和Stackoverflow,并找到了几种解决方案:

  1. 只提示输入本地文件。执行来自任何网站(例如http://javatester.org/javascript.html)的Javascript。将下面的代码添加到本地HTML应该可以解决这个问题(正如这里提到的:https://msdn.microsoft.com/en-us/library/ms537628(v=vs.85).aspx )。我用msdn站点上的一个非常基本的例子来尝试它,它成功了,但是在添加了一些代码之后,它不再起作用了。我又想到了,所以这个解决办法对我来说似乎不可靠。 <!-- saved from url=(0014)about:internet --><!-- saved from url=(0023)http://www.contoso.com/ -->
  2. 另一种解决方案是改变IE的安全设置,这也会影响到浏览器的控制.因此,我尝试将所有区域设置为最低安全级别(因特网选项->安全),然后单击“自定义级别”以启用更多。但它还是不起作用,我还是被提示了。只有一件事我不明白:在正常模式下打开HTML会提示我执行脚本,但是inprivate模式会立即执行任何脚本。这只是一个错误还是正常的行为?但是最后,再次更改安全设置并没有带来任何解决方案。
  3. 我的C#程序中的Invokescript方法无法再次运行任何脚本。
  4. 直接编辑表(使用execCommand("enableInlineTableEditing", true);)无法工作,因为IE不支持此命令。

所以如果你读到现在,我不得不说谢谢你。如果您知道如何可靠地激活webbrowser控件中的JavaScripts或如何编辑webbrowser控件中的html表,我会非常高兴的:)

顺便说一句:我使用的是.NET 4.5,我测试了所有的解决方案和两台不同用户的个人电脑。最后,我为我的英语感到抱歉,希望大家都能理解。

编辑:基本示例,它在IE中运行良好(甚至没有提示),但它在webbrowser-control中没有执行任何类型的JS:

代码语言:javascript
运行
复制
<!doctype html>
<!-- saved from url=(0023)http://www.contoso.com/ -->
<html>
  <head>
    <title>A Mark of the Web Example test</title>
  </head>
  <body>
     <p>Hello, World</p>
     <script language="JavaScript">
        document.write ("Hello Javascript");
    </script>

    <p>
    alert test
    </p>
    <script language="JavaScript">
        alert("test");
    </script>
  </body>
</html>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-21 09:21:35

当设计模式设置为"on“时,Javascript不会在webbrowser控件中执行,在我的示例中是:

代码语言:javascript
运行
复制
document = webbrowser.Document as HTMLDocument;
document.designMode = "On";

designmode属性停止了执行javascript的webbrowser控件,因此我将其更改为:

代码语言:javascript
运行
复制
document.body.setAttribute("contentEditable", "true");

现在已经执行了javascripts,并且仍然可以编辑document,所以这个简单的更改为我解决了问题。谢谢你的回复

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32649795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档