我正在使用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元素?