WebBrowser控制脚本错误

时间:2012-09-17 19:12:28

标签: javascript html winforms bots

我正在制作访问特定网址的机器人,以表格形式提供输入并通过点击提交按钮提交...

让我解释一下我的情况。当我启动我的机器人时,首先访问URL,在加载网页后,我必须手动检查一个单选按钮,然后按下提交按钮(窗体控制按钮填充网页的所有字段并提交它通过使用invoke click方法)来提交表单。

我正在使用Web浏览器控件(在C#.NET窗体中编码),问题是当我点击一个单选按钮时,会弹出一个弹出窗口,标题为“脚本错误”并显示enter image description here

下面是我使用IE开发工具复制的单选按钮标签(弹出错误)。

<input name="array(BlastDatabaseType)" onchange="changeQuestion(); changeAlgorithms();"
type="radio" value="Proteins"/>

在普通网络浏览器上不会发生此错误。 我想解决这个错误,不要隐藏。

2 个答案:

答案 0 :(得分:4)

我从您的问题中了解到您需要修复由于Web浏览器控件而生成的javascript错误,

有两种基本解决方案,

1)强制Web浏览器控件模拟最新的IE浏览器。 您需要对此进行注册表更改,并且您将能够使用PC上安装的IE浏览器。

改编自Mikel Solution
您可以在HTML页面中使用元标记<meta http-equiv="X-UA-Compatible" content="IE=9" >

但最好将注册表项添加到:(goto > start > run > type 'regedit' enter)

HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER) > SOFTWARE > Microsoft > Internet Explorer > Main > FeatureControl > FEATURE_BROWSER_EMULATION > contoso.exe = (DWORD) 00009000

10000 (0x02710)用于Internet Explorer 10

2)使用GeckoFX包装,包装Gecko引擎,
下载 GeckoFX wrapper
下载 XulRunner

首先解压缩GeckoFX并读取readme.txt文件。

在工具栏中添加Gecko.dll的引用,然后将控件拖放到表单上。

public Form1()
    {
        InitializeComponent();
        //you need to extract the Xulrunner in the soultion directory
        //  (preferable) b/c wrapper relies on these dlls.
        Skybound.Gecko.Xpcom.Initialize(@"C:\Xulrunner");
    }

    private void Form1_Load(object sender, EventArgs e)
    {
       geckoWebBrowser1.Navigate("http://tritrypdb.org/tritrypdb/"); 
    }


其他有用的链接:
http://msdn.microsoft.com/en-us/library/ee330730%28VS.85%29.aspx#browser_emulation
Will the IE9 WebBrowser Control Support all of IE9's features, including SVG?

答案 1 :(得分:0)

IE处理onchange事件的方式不同。 IE仅在元素失去焦点时触发onchange事件。

如果我理解你的问题,你可能想要使用onkeypress事件。