Javascript C# 中的 WebBrowser 控件在激活设计模式时未执行
Javascript in C# WebBrowser Control not executed when designmode activated
解决方法:
当 designmode 设置为 "on" 时,Javascript 不会在 webbrowser-control 中执行,在我的例子中是:
document = webbrowser.Document as HTMLDocument;
document.designMode = "On";
设计模式 属性 停止了 webbrowser-control 执行 javascript,所以我将其更改为以下内容:
document.body.setAttribute("contentEditable", "true");
现在 javascripts 已经执行并且仍然可以编辑文档,所以这个简单的更改解决了我的问题。感谢所有回复
原题:
我正在尝试使用 WebBrowser 控件实现 C# GUI。在 Webbrowser 中,我调用本地存储的 HTML-Files,文件始终存储在 C: 或 D: 中,它们不在共享文件夹或类似文件夹中。
目前一切正常。
现在我尝试将一些 JavaScript 添加到 HTML-Files 中,具有一些基本功能来编辑 html-tables(添加行、添加列等)。但是 Javascript 没有在 webbrowser-control 中执行。我尝试用 IE 打开文件,但系统提示我输入 ActiveX 内容,我告诉 IE "Allow blocked content",一切正常。 (我没有在 webbrowser-control 中得到提示。)
现在的问题是:是否可以 "always enable" 在网络浏览器控件中编写任何类型的脚本或以与 IE 相同的方式进行提示?
当然我搜索了 Web 和 Whosebug,我找到了几个解决方案:
IE只提示本地文件。 Javascript 来自任何网站(例如 http://javatester.org/javascript.html) is executed. Adding the following Code to the local HTML-File should fix this problem (as mentioned here: 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/ -->
另一个解决办法是更改IE的安全设置,这应该也会影响webbrowser-control。所以我尝试将所有区域设置为最低安全级别(Internet 选项 -> 安全),之后我单击 "custom level" 以启用更多。但它仍然没有用,我仍然得到提示。只有一件事我不明白:Open HTML-Files in normal-mode 提示我执行脚本,但 inprivate-mode 立即执行任何脚本。这只是一个错误还是正常行为?但最终再次更改安全设置没有解决方案
我的 C# 程序中的 Invokescript 方法无法再次 运行 任何脚本。
直接编辑表(使用 execCommand("enableInlineTableEditing", true);
)不起作用,因为 IE 不支持此命令。
所以如果你读到这里,我不得不说声谢谢。如果你有任何想法,如何可靠地激活 webbrowser-control 中的 JavaScripts 或者如何编辑 webbrowser-control 中的 html-tables,我会很高兴 :)
顺便说一句:我使用的是 .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>
当 designmode 设置为 "on" 时,Javascript 不会在 webbrowser-control 中执行,在我的例子中是:
document = webbrowser.Document as HTMLDocument;
document.designMode = "On";
设计模式 属性 停止了 webbrowser-control 执行 javascript,所以我将其更改为以下内容:
document.body.setAttribute("contentEditable", "true");
现在 javascript 已执行并且仍然可以编辑文档,所以这个简单的更改为我解决了问题。感谢所有回复
解决方法:
当 designmode 设置为 "on" 时,Javascript 不会在 webbrowser-control 中执行,在我的例子中是:
document = webbrowser.Document as HTMLDocument;
document.designMode = "On";
设计模式 属性 停止了 webbrowser-control 执行 javascript,所以我将其更改为以下内容:
document.body.setAttribute("contentEditable", "true");
现在 javascripts 已经执行并且仍然可以编辑文档,所以这个简单的更改解决了我的问题。感谢所有回复
原题:
我正在尝试使用 WebBrowser 控件实现 C# GUI。在 Webbrowser 中,我调用本地存储的 HTML-Files,文件始终存储在 C: 或 D: 中,它们不在共享文件夹或类似文件夹中。 目前一切正常。
现在我尝试将一些 JavaScript 添加到 HTML-Files 中,具有一些基本功能来编辑 html-tables(添加行、添加列等)。但是 Javascript 没有在 webbrowser-control 中执行。我尝试用 IE 打开文件,但系统提示我输入 ActiveX 内容,我告诉 IE "Allow blocked content",一切正常。 (我没有在 webbrowser-control 中得到提示。) 现在的问题是:是否可以 "always enable" 在网络浏览器控件中编写任何类型的脚本或以与 IE 相同的方式进行提示?
当然我搜索了 Web 和 Whosebug,我找到了几个解决方案:
IE只提示本地文件。 Javascript 来自任何网站(例如 http://javatester.org/javascript.html) is executed. Adding the following Code to the local HTML-File should fix this problem (as mentioned here: 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/ -->
另一个解决办法是更改IE的安全设置,这应该也会影响webbrowser-control。所以我尝试将所有区域设置为最低安全级别(Internet 选项 -> 安全),之后我单击 "custom level" 以启用更多。但它仍然没有用,我仍然得到提示。只有一件事我不明白:Open HTML-Files in normal-mode 提示我执行脚本,但 inprivate-mode 立即执行任何脚本。这只是一个错误还是正常行为?但最终再次更改安全设置没有解决方案
我的 C# 程序中的 Invokescript 方法无法再次 运行 任何脚本。
直接编辑表(使用
execCommand("enableInlineTableEditing", true);
)不起作用,因为 IE 不支持此命令。
所以如果你读到这里,我不得不说声谢谢。如果你有任何想法,如何可靠地激活 webbrowser-control 中的 JavaScripts 或者如何编辑 webbrowser-control 中的 html-tables,我会很高兴 :)
顺便说一句:我使用的是 .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>
Javascript 不会在 webbrowser-control 中执行,在我的例子中是:
document = webbrowser.Document as HTMLDocument;
document.designMode = "On";
设计模式 属性 停止了 webbrowser-control 执行 javascript,所以我将其更改为以下内容:
document.body.setAttribute("contentEditable", "true");
现在 javascript 已执行并且仍然可以编辑文档,所以这个简单的更改为我解决了问题。感谢所有回复