2011-11-11 27 views
1

に関する次のコードは、.aspxのファイル内にあるIFRAMEで実行されているSilverlightアプリケーションから実行されますChromeのJavaScriptの代替、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は未定義を返します。 Chromeでコードを呼び出すと、「自己呼び出しに失敗しました」というエラーが発生します。 stacktraceは "at System.Windows.Browser.ScriptObject.InvokeSelf(Object [] args)"から始まります。

Google Chromeをサポートするためにこのコードを書き直す方法を教えてもらえますか?

+0

は私を引用しないが、私は、これはうまくいくと思う:あなたのポストのための 'window.frameElement.ownerDocument.parentWindow' – Joe

+0

感謝を。私はそれを試しましたが、コードは "Eval failed"というエラーで失敗します。 – ebgHendriks

+0

.aspxファイルにも役立たなかった – ebgHendriks

答えて

0

これは動作するはずです:

window.frameElement.ownerDocument.parentWindow