我的两个朋友测试了我一直在开发的依赖WebBrowser控件的项目,他们发现了一个常见的情况,即WebBrowser控件无法在包含的网页上执行任何JavaScript代码。
为了缩小问题范围,我创建了一个只包含WebBrowser控件的Windows窗体项目,并尝试导航到以下页面:http://javatester.org/javascript.html
我的朋友的电脑显示如下(点击放大):
正如您所看到的,在尝试调用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已启用,该问题仅存在于此测试应用程序及其所属的主项目中。
任何帮助都将不胜感激,我已经花费了两个月的时间尝试找出问题,但仍然无法解决。