Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当designmode激活时,C#WebBrowser控件中的Javascript未执行_Javascript_C#_Internet Explorer_Webbrowser Control - Fatal编程技术网

当designmode激活时,C#WebBrowser控件中的Javascript未执行

当designmode激活时,C#WebBrowser控件中的Javascript未执行,javascript,c#,internet-explorer,webbrowser-control,Javascript,C#,Internet Explorer,Webbrowser Control,解决方案: 当designmode设置为“开”时,Javascript不会在webbrowser控件内执行,在我的例子中是: document = webbrowser.Document as HTMLDocument; document.designMode = "On"; document = webbrowser.Document as HTMLDocument; document.designMode = "On"; designmode属性停止webbrowser控件执行javas

解决方案:


当designmode设置为“开”时,Javascript不会在webbrowser控件内执行,在我的例子中是:

document = webbrowser.Document as HTMLDocument;
document.designMode = "On";
document = webbrowser.Document as HTMLDocument;
document.designMode = "On";
designmode属性停止webbrowser控件执行javascript,因此我将其更改为以下内容:

document.body.setAttribute("contentEditable", "true");
document.body.setAttribute("contentEditable", "true");
现在Java脚本已经执行,编辑文档仍然是可能的,所以这个简单的更改为我解决了这个问题。谢谢你的回复

原始问题:

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

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

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

  • IE仅提示输入本地文件。执行来自任何网站(例如)的Javascript。将以下代码添加到本地HTML文件应该可以解决此问题(如本文所述:)。我用msdn站点上的一个非常基本的示例进行了尝试,它成功了,但是在添加了一些代码之后,它就不再有效了。IE再次提示我,所以这个解决方案对我来说似乎不可靠

  • 另一个解决方案是更改IE的安全设置,这也会影响webbrowser控件。因此,我尝试将所有区域设置为最低安全级别(Internet选项->安全),然后单击“自定义级别”以启用更多。但它仍然不起作用,我仍然得到了提示。只有一件事我不明白:在正常模式下打开HTML文件会提示我执行脚本,但inprivate模式会立即执行任何脚本。这只是一个bug还是正常行为?但最后,再次更改安全设置并没有带来任何解决方案

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

  • 直接编辑表格(使用
    execCommand(“enableinlineableediting”,true);
    )不起作用,因为IE不支持此命令

  • 所以如果你读到这一点,我必须说谢谢你。如果您知道如何在webbrowser控件中可靠地激活JavaScripts,或者如何在webbrowser控件中编辑html表,我将非常高兴:)

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

    编辑:基本示例,在IE中运行良好(甚至没有提示),但在webbrowser控件中不执行任何类型的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>
    
    
    Web示例测试的标记
    你好,世界

    document.write(“Hello Javascript”); 警报测试

    警报(“测试”);
    当designmode设置为“开”时,Javascript不会在webbrowser控件内执行,在我的例子中是:

    document = webbrowser.Document as HTMLDocument;
    document.designMode = "On";
    
    document = webbrowser.Document as HTMLDocument;
    document.designMode = "On";
    
    designmode属性停止webbrowser控件执行javascript,因此我将其更改为以下内容:

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

    现在Java脚本已经执行,编辑文档仍然是可能的,所以这个简单的更改为我解决了这个问题。感谢所有回复

    您能发布一些代码吗?当然,我添加了一个非常简单的示例(基于中的ms示例)是您的应用程序还是?我在应用程序中尝试了您的html/javascript代码。我得到了警告和页面内容。它在没有这行代码的情况下也能工作