JavaScript在.NET WebBrowser控件中无法执行

13

我的两个朋友测试了我一直在开发的依赖WebBrowser控件的项目,他们发现了一个常见的情况,即WebBrowser控件无法在包含的网页上执行任何JavaScript代码。

为了缩小问题范围,我创建了一个只包含WebBrowser控件的Windows窗体项目,并尝试导航到以下页面:http://javatester.org/javascript.html

我的朋友的电脑显示如下(点击放大):

Control render

正如您所看到的,在尝试调用JS具体代码时,它不会渲染任何东西;或者,如果您在启用或禁用JS的浏览器中查看它,您将看到一些内容。

他导出了包含启用JavaScript设置的注册表键(请参见https://gist.github.com/4699943),每个键的值都匹配我使用的相同设置,当我运行程序时,没有任何问题。

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

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已启用,该问题仅存在于此测试应用程序及其所属的主项目中。

任何帮助都将不胜感激,我已经花费了两个月的时间尝试找出问题,但仍然无法解决。


1
我不认为框架版本应该是一个问题。我曾经在3.5上进行过JavaScript工作正常的项目。 我知道,由于与标准WebBrowser控件的其他问题,我已经将很多项目转移到使用WebKit.net(WebKit是Chrome和Safari的布局引擎)。 这是一个很棒的工具,他们真的试图使其类似于标准控件。 如果我是你,我至少会去看一下。 [WebKit.net] (http://webkitdotnet.sourceforge.net) - Leon Newswanger
这是略微脱离主题,但我之前曾考虑过转换到 WebKit,但项目的一些未来要求是我们可以使用 ObjectForScripting 属性从 JavaScript 回调回汇编,而我在 WebKit 中从未能找到这样的东西;你在 WebKit 中有遇到过吗? - user1243584
@HanletEscaño - 是的,两者都有IE9。 - user1243584
相关内容:https://dev59.com/4Gs05IYBdhLWcg3wR_63 - BartoszKP
1
元标签解决方案可能会引起兴趣。IE7默认情况下https://dev59.com/Fm445IYBdhLWcg3w9O3R - Adz
显示剩余5条评论
2个回答

0

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


-1
脚本在使用 webbrowser 控件的 Document Text 属性时无法加载。但使用 Navigate 方法是完全正常的。我需要 Document Text 属性正常工作,因为我从第三方获取了 HTML。如果我将该 HTML 内容创建为一个文件并在常规 IE 浏览器中打开,则同样的 HTML 内容可以完美地工作。WebBrowser 控件有缺陷。

1
你能详细说明一下这个答案,或者提供更多的解释或文档吗? - ryanyuyu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接