BHO暴露JavaScript方法工作在IE 9,但在早期版本中失败 [英] BHO exposing javascript method works in IE 9+ but fails in earlier versions
本文介绍了BHO暴露JavaScript方法工作在IE 9,但在早期版本中失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在做一个BHO暴露方法的JavaScript。
I'm making a BHO that exposes method to JavaScript.
它的工作原理好于IE 9和IE 10,但在IE 8的 RuntimeBinderException失败:mshtml.HTMLWindow2Class不包含signJson
It works okey in IE 9 and IE 10, but fails in IE 8 with RuntimeBinderException: "mshtml.HTMLWindow2Class" does not contain "signJson"
.
代码主要是基于现场重装IE延伸。
下面是一个方式功能注入到窗口:
Here is a way that function is injected into window:
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 8中的IE 9?什么是注射的方法把它一个适当的方式?
What's different about about mshtml.HTMLWindow2Class
in IE 8 from IE 9? What is a proper way to inject method into it?
推荐答案
在发现的回答堆栈溢出。你只需要改变代码如下:
Found an answer on Stack Overflow. You just have to change code to this:
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);
}
}
这篇关于BHO暴露JavaScript方法工作在IE 9,但在早期版本中失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文