我有一个winform,屏幕抓取另一个应用程序并生成一个html文件。我想将js添加到html文件中,以便当用户单击标题时,它将发送一个字符串并在winform中触发一个函数。
我已经研究了一段时间,但我见过的所有可能的解决方案都涉及webbrowser控件,我没有使用也不打算使用它。
是否可以通过js从IE页面调用winform函数?
更新:现在考虑使用webbrowser控件。
答案 0 :(得分:3)
如果使用WebBrowser
控件,则可以将脚本属性的对象设置为具有要向javascript公开的公共方法的类:
[ComVisibleAttribute(true)] //required
class MyJsInterface
{
public string Test()
{
return "Hello World!";
}
}
browser1.ObjectForScripting = new MyJsInterface(); //for example
然后,您可以使用MyJsInterface
对象从javascript调用window.external
中的方法:
//add this script to document.onload or in a script tag at the end of the document
//var headings = document.getElementsByClassName("heading");
//var headings = document.getElementsByTagName("h1");
for (var i = 0; i < headings.length; i++)
{
var element = headings[i];
//element.addEventListener("click", function () {
element.attachEvent("click", function () {
var text = window.external.Test();
alert(text);
}
}
在IE 9之前的Internet Explorer版本中,您必须使用attachEvent
而不是标准addEventListener
:
Legacy Internet Explorer and attachEvent
也可以从后面的代码中调用javascript方法。
在这里阅读更多:
Implement Two-Way Communication Between DHTML Code and Client Application Code
答案 1 :(得分:1)
在表单上覆盖WndProc
(请参阅here和here)并收听WM_LBUTTONDOWN条消息。根据Web浏览器控件的位置转换点。然后使用IHtmlDocument(mshtml object library)访问DOM并在该位置找到元素(使用elementFromPoint)。