BHO暴露javascript方法在ie9 +中工作,但在早期版本中失败
本文关键字:版本 失败 工作 暴露 方法 ie9 BHO javascript | 更新日期: 2023-09-27 18:15:56
我正在制作一个BHO,将方法暴露给JavaScript。
在ie9和ie10中工作正常,但在ie8中失败RuntimeBinderException: "mshtml.HTMLWindow2Class" does not contain "signJson"
.
代码主要基于实时加载IE扩展。
下面是将函数注入window的方法:
public void InjectScriptResource(dynamic window)
{
var windowEx = (IExpando)window;
if (windowEx.GetProperty("signJson", BindingFlags.Default) == null)
{
windowEx.AddProperty("signJson");
window.signJson = this;
}
}
ie8和ie9中的mshtml.HTMLWindow2Class
有什么不同?给它注入方法的合适方式是什么?
在Stack Overflow上找到答案。你只需要把代码改成这样:
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);
}
}