2011-11-11 28 views
1

下面的代碼是從Silverlight應用程序,這是在iframe中運行,這是一個在.aspx文件執行:的JavaScript替代爲Chrome,關於window.parent

private void PostMessage<T>(Message<T> message) 
    { 
     HtmlWindow window = HtmlPage.Window; 
     ScriptObject postMessage = window.Eval("window.parent.postMessage") as ScriptObject; 

     if (postMessage != null) 
     { 
      string jsonMessage = ToJsonString(message); 
      string[] args = { jsonMessage, "*" }; 
      postMessage.InvokeSelf(args); 
     } 
    } 

此IE中工作得很好,但不在Google Chrome中。這與window.parent引用有關,Chrome返回undefined。 在Chrome中調用代碼時,會崩潰:「無法調用自我」; stacktrace以「在System.Windows.Browser.ScriptObject.InvokeSelf(Object [] args)」開頭「

任何人都可以告訴我如何重寫此代碼以支持Google Chrome嗎?

+0

不要引用我,但我想這樣的作品:'window.frameElement.ownerDocument.parentWindow' – Joe

+0

感謝您的文章;我試過了,但現在代碼失敗,出現「Eval失敗」.... – ebgHendriks

+0

添加 到.aspx文件也沒有幫助 – ebgHendriks

回答

0

這應該工作:

window.frameElement.ownerDocument.parentWindow