gpt4 book ai didi

激活设计模式时,C# WebBrowser 控件中的 Javascript 不执行

转载 作者:行者123 更新时间:2023-11-27 23:51:38 25 4
gpt4 key购买 nike

解决方案:

当设计模式设置为“on”时,Javascript 不会在网络浏览器控件内执行,在我的例子中是:

document = webbrowser.Document as HTMLDocument;
document.designMode = "On";

designmode 属性停止了 webbrowser-control 执行 javascript,所以我将其更改为以下内容:

document.body.setAttribute("contentEditable", "true");

现在 JavaScript 已执行,并且仍然可以编辑文档,因此这个简单的更改解决了我的问题。感谢大家的回复

原始问题:

我正在尝试使用 WebBrowser 控件实现 C# GUI。在 Web 浏览器中,我调用本地存储的 HTML 文件,这些文件始终存储在 C: 或 D: 上,而不是共享文件夹或类似的文件夹中。到目前为止一切正常。

现在我尝试向 HTML 文件中添加一些 JavaScript,并使用一些基本功能来编辑 html 表(添加行、添加列等)。但 Javascript 不在网络浏览器控件内执行。我尝试使用 IE 打开文件,系统提示我输入 ActiveX 内容,我告诉 IE“允许阻止的内容”,一切正常。 (我在网络浏览器控件中没有收到提示。)现在的问题是:是否可以在网络浏览器控件中“始终启用”任何类型的脚本或以与 IE 相同的方式进行提示?

当然,我搜索了网络和 Stackoverflow,找到了几个解决方案:

  1. IE 仅提示输入本地文件。执行来自任何网站的 Javascript(例如 http://javatester.org/javascript.html )。将以下代码添加到本地 HTML 文件应该可以解决此问题(如此处所述: https://msdn.microsoft.com/en-us/library/ms537628(v=vs.85).aspx )。我用 msdn 网站上的非常基本的示例进行了尝试,它起作用了,但是在添加了更多代码之后,它不再起作用了。 IE再次提示我,所以这个解决方案对我来说似乎不太可靠。

    <!-- saved from url=(0014)about:internet -->

    <!-- saved from url=(0023)http://www.contoso.com/ -->

  2. 另一个解决方案是更改 IE 的安全设置,这也会影响网络浏览器控制。因此,我尝试将所有区域设置为最低安全级别(Internet 选项 -> 安全),之后我单击“自定义级别”以启用更多级别。但它仍然不起作用,我仍然收到提示。只有一件事我不明白:在正常模式下打开 HTML 文件提示我执行脚本,但在私有(private)模式下立即执行任何脚本。这只是一个错误还是正常行为?但最终再次更改安全设置并没有解决问题

  3. 我的 C# 程序中的 Invokescript 方法无法再次运行任何脚本。

  4. 直接编辑表格(使用 execCommand("enableInlineTableEditing", true); )不起作用,因为 IE 不支持此命令。

如果您读到这里,我必须说谢谢。如果您有任何想法,如何可靠地激活 Web 浏览器控件内的 JavaScript,或者只是如何编辑 Web 浏览器控件内的 html 表,我会非常高兴:)

顺便说一句:我正在使用 .NET 4.5,并且我测试了所有解决方案以及不同用户的两台不同 PC。最后我对我的英语感到抱歉,希望大家能够理解。

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

<!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>

最佳答案

当设计模式设置为“on”时,Javascript 不会在网络浏览器控件内执行,在我的例子中是:

document = webbrowser.Document as HTMLDocument;
document.designMode = "On";

designmode 属性停止了 webbrowser-control 执行 javascript,所以我将其更改为以下内容:

document.body.setAttribute("contentEditable", "true");

现在 JavaScript 已执行,并且仍然可以编辑文档,因此这个简单的更改解决了我的问题。感谢大家的回复

关于激活设计模式时,C# WebBrowser 控件中的 Javascript 不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32649795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com