XAML / WPF WebBrowser事件未触发

时间:2017-03-31 18:47:33

标签: c# xaml

我正在使用XAML / WPF / C#并在XAML窗口上创建一个WebBrowser控件,如下所示:

    <Border Background="Transparent" BorderBrush="White" BorderThickness="1" >
        <WebBrowser ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                        ScrollViewer.VerticalScrollBarVisibility="Disabled"
                        ScrollViewer.CanContentScroll="False"
                        HorizontalAlignment="Stretch"
                        VerticalAlignment="Stretch" 
                        LoadCompleted="AfterpageDraw"
                        Name="SpecialForm"  />
    </Border>

在c#代码中,WebBrowser加载了一个html页面:

this.SpecialForm.NavigateToString(path2page);
mshtml.IHTMLDocument3 htmlDoc = (mshtml.IHTMLDocument3)this.SpecialForm.Document;

我在页面上加载了一个<select>元素,它有一个onclick事件,并指定了javascript方法。该页面在标准浏览器窗口外正常工作。加载到WebBrowser控件时,不会调用onclick事件方法。

<select onclick="multiselect('xxx')" id="myselect" name="myselect">
    <option value="">Select a value</option>
    <option value="Num1">Num 1</option>
    <option value="Num2">Num 2</option>
    <option value="Num3">Num 3</option>
    <option value="Num4">Num 4</option>
</select>

在c#代码中,我可以找到选择对象,即mshtml.IHTMLElement类型的对象。初始化页面时,在调试器中我可以看到select.onclick参数的值设置为“multiselect('xxx')”。

我不确定如何在WebBrowser控件中调试网页。

经过一些研究后,我发现2004年左右的一些信息表明WebBrowser元素不支持鼠标事件。

我尝试了以下操作,这显然不起作用,因为这会立即调用Javascript方法而不是在鼠标单击时调用方法,尽管我确实看到javascript在页面上可用并运行。

select.onclick = this.SpecialForm.InvokeScript("multiselect", new String[] { attrName }); 

如何将Iavascript onclick事件处理程序分配给IHTMLElement元素?

0 个答案:

没有答案