我正在制作一个向 JavaScript 公开方法的 BHO。
它在 IE 9 和 IE 10 中工作正常,但在 IE 8 中失败运行时Binder异常: "mshtml.HTMLWindow2Class" does not contain "signJson"
.
代码主要基于实时重新加载 IE 扩展 https://github.com/dvdotsenko/livereload_ie_extension.
这是将函数注入到窗口的一种方式:
public void InjectScriptResource(dynamic window)
{
var windowEx = (IExpando)window;
if (windowEx.GetProperty("signJson", BindingFlags.Default) == null)
{
windowEx.AddProperty("signJson");
window.signJson = this;
}
}
关于有什么不同mshtml.HTMLWindow2Class
从 IE 9 到 IE 8?将方法注入其中的正确方法是什么?
找到一个answer https://stackoverflow.com/questions/11615753/call-c-sharp-bho-method-from-javascript在堆栈溢出上。您只需将代码更改为:
public void InjectScriptResource(dynamic window)
{
var windowEx = (IExpando)window;
if (windowEx.GetProperty("signJson", BindingFlags.Default) == null)
{
// windowEx.AddProperty("signJson");
PropertyInfo p = windowEx.AddProperty("signJson");
// window.signJson = this;
p.SetValue(windowEx, this);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)