1

こんにちは、クロスドメインに問題があります。

私が持っている1つのサーバー(example.com)があります:

メインページとして index.html、index.xhtml 内のフレームとして indexIFrame.html

Index.html は、静的サーバーから多数の JavaScript ファイルを読み込みます (例: staticServer:8090/myScript.js)。

また、indexIFrame.html は、別の静的サーバー (anotherServer:8070/myOtherScript.js) から独自の JavaScript ファイルをロードします。

だから myOtherScript.js で私はこれをやっています:

parent.MyMainClass.showPopup();

MyMainClass クラスは、staticServer の js ファイルで宣言されます (このファイルは index.xhtml で使用できます)。

コードを実行すると、次のようになります。

Unsafe JavaScript attempt to access frame with URL http://example:8080/myapp/myList.xhtml from frame with URL http://example:8080/myapp/myListIFrame.xhtml Domains, protocols and ports must match.

myList と myListIframe は同じサーバーにあり、javascript リソースのみが異なるドメインにあります。

したがって、これを機能させる方法がわかりません。何か案は?

4

2 に答える 2

1

最新のブラウザでは、これが許可されていません。推奨される手法は、代わりにhttps://developer.mozilla.org/en-US/docs/DOM/window.postMessageを使用することです。

...しかし、いつものように、IE は独自の小さな世界にあり、その標準をサポートしていないことがわかります。クロスブラウザー ソリューションを提供するフレームワークがいくつかあることは知っていますが、具体的に推奨することはできません。

クロスブラウザー リスナーは次のとおりです。

if (typeof(window.postMessage) != 'undefined') {
    if (typeof(window.addEventListener) != 'undefined') {
        window.addEventListener("message", function(event) {
            doSomething(event.data);
        }, false);
    } else {
        window.attachEvent('onmessage', function(e) {
            doSomething(e.data);
        });
    }
}​

...そして送信者...

if (typeof(window.postMessage) != 'undefined') {
    //modern browsers...
    window.top.postMessage('my data', '*');
} else {
    //older browsers - just access window.top
}
于 2012-09-26T17:31:03.797 に答える
0

サーバー上にいくつかのエイリアスを作成してみてください。

たとえば、次のようhttp://example:8080/myapp/myScript.jsstaticServer:8090/myScript.jsなります。

これらのJSファイルが実際にサーバー上にあると見なす必要があるため、これはjavascriptを欺く可能性があります。

于 2012-09-26T17:39:05.380 に答える