设计模式激活

时间:2015-09-18 10:30:36

标签: javascript c# internet-explorer webbrowser-control

溶液

当designmode设置为“on”时,在webbrowser-control中不会执行Javascript,在我的情况下它是:

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

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

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

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

原始问题:

我正在尝试使用WebBrowser控件实现C#GUI。在Webbrowser中我调用本地存储的HTML文件,文件总是存储在C:或D:中,它们不在共享文件夹或类似的东西上。 到目前为止一切正常。

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

当然,我搜索了Web和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的安全设置,这也应该影响webbrowser-control。所以我尝试将所有区域设置为最低安全级别(Internet选项 - &gt;安全性),之后我点击“自定义级别”以启用更多。但它仍然没有用,我仍然得到提示。只有一件事我不理解:在正常模式下打开HTML文件提示我执行脚本,但inprivate-mode立即执行任何脚本。这只是一个错误还是正常行为?但最后更改安全设置再次没有带来解决方案

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

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

  5. 所以如果你读到这一点,我必须说谢谢。如果你有任何想法,如何在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>
    

1 个答案:

答案 0 :(得分:1)

当designmode设置为“on”时,在webbrowser-control中不会执行Javascript,在我的情况下它是:

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

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

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

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