我正在制作一个向JavaScript公开方法的BHO。
它在IE 9和IE 10中运行,但在IE 8中使用 RuntimeBinderException :"mshtml.HTMLWindow2Class" does not contain "signJson"
失败。
代码主要基于live reload IE extention。
这是一种将函数注入窗口的方法:
public void InjectScriptResource(dynamic window)
{
var windowEx = (IExpando)window;
if (windowEx.GetProperty("signJson", BindingFlags.Default) == null)
{
windowEx.AddProperty("signJson");
window.signJson = this;
}
}
IE 9中IE 8中的mshtml.HTMLWindow2Class
有什么不同?将方法注入其中的正确方法是什么?
答案 0 :(得分:0)
在Stack Overflow上找到answer。您只需将代码更改为:
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);
}
}