Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.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
C# JavaScript未在.NET WebBrowser控件中执行_C#_Javascript_.net_Webbrowser Control - Fatal编程技术网

C# JavaScript未在.NET WebBrowser控件中执行

C# JavaScript未在.NET WebBrowser控件中执行,c#,javascript,.net,webbrowser-control,C#,Javascript,.net,Webbrowser Control,我的两个朋友测试了一个依赖于WebBrowser控件使用的项目,并成功地遇到了WebBrowser控件无法在包含的网页上执行任何JavaScript的持续场景 为了缩小范围,我创建了一个仅包含WebBrowser控件的新Windows窗体项目,并尝试导航到以下页面: 我朋友电脑上的结果如下(单击放大): 正如您所见,在尝试调用JS特定代码时,它不会呈现任何内容,或者,如果您在禁用或启用JS的web浏览器中查看它,您将看到一些内容 他导出了注册表项,其中包含启用JavaScript的设置(请参阅

我的两个朋友测试了一个依赖于WebBrowser控件使用的项目,并成功地遇到了WebBrowser控件无法在包含的网页上执行任何JavaScript的持续场景

为了缩小范围,我创建了一个仅包含WebBrowser控件的新Windows窗体项目,并尝试导航到以下页面:

我朋友电脑上的结果如下(单击放大):

正如您所见,在尝试调用JS特定代码时,它不会呈现任何内容,或者,如果您在禁用或启用JS的web浏览器中查看它,您将看到一些内容

他导出了注册表项,其中包含启用JavaScript的设置(请参阅),每个注册表项中1400的值与我使用的相同设置相匹配,当我运行程序时,我没有问题

整个测试项目的代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Shown(object sender, EventArgs e)
        {
            this.webBrowser1.Navigate("http://javatester.org/javascript.html");
        }
    }
}
如果使用针对4.5框架(在我的机器上或他的机器上)的代码创建了一个新项目,那么它可以工作,但是如果使用4.0或更低版本创建了一个项目,则会出现上述结果。我不确定这是巧合还是与问题/解决方案有关

应该注意的是,如果他在Internet Explorer中导航到此页面,则不会出现任何问题,它会检测到启用了JavaScript,此问题仅存在于此测试应用程序及其所属的主项目中


任何帮助都将不胜感激,我花了整整两个月的时间试图解决这个问题,但仍然无法解决。

从我的测试中,WebBrowser with.NET 4报告了一个IE 7.0的web浏览器代理字符串。因此,首先检查您的JavaScript在IE7中是否正常工作。

如果您使用的是webbrowser控件.Document Text属性,则不会加载脚本。使用导航方法完全可以。当我从第三方获取html时,我需要document text属性。如果我用它创建一个html文件并在常规IE浏览器中打开它,同样的html内容工作得非常好。webbrowser控件有缺陷。

我认为框架版本不应该成为问题。我已经在3.5中完成了JavaScript可以正常工作的项目。我知道,由于标准
WebBrowser
控件的其他问题,我已经将许多项目转移到WebKit.net(WebKit是Chrome和Safari的布局引擎)。这是一个很好的工具,他们真的试图让它与标准控件相似。如果我是你,我至少会去看看@LeonNewswanger——这有点离题,但是:我之前考虑过切换到WebKit,但是该项目未来的一些要求是,我们可以使用ObjectForScript属性从JavaScript调用程序集,而我从来没有在WebKit中找到这样的东西;你在WebKit里见过这个吗?我真的没看过,对不起。我意识到这并不是你问题的答案。这就是为什么我将其作为评论发布,并且由于我不知道您的其他要求,我认为这可能有助于您解决问题。在过去的WebKit中,我还需要深入研究互操作本身,以找到其他问题,因为WebKit.net包的很大一部分基本上只是包装类。元标记解决方案可能很有意思。IE7是默认的,您能详细说明这个答案,或者提供更多的解释或文档吗?