2013-05-28 19 views
2

我正在製作一個BHO,將方法公開給JavaScript。BHO暴露javascript方法在IE 9+中工作,但在早期版本中失敗

它在IE 9和IE 10中運行okey,但在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

在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); 
    } 
} 
相關問題