web-dev-qa-db-ja.com

jQueryクロスドメインiframeスクリプト

外部URLをロードするiframeのDOMにアクセスしようとしています。もちろん、クロスドメインセキュリティのために「アクセスが拒否されました」というエラーが表示されます。どうすればこれを機能させることができますか?私はjsonで何かが行われているのを見ました(しかし、外部ソースからjson文字列を取得することはできません)そしてHTML5ポストメッセージで何かが行われています。

あなたはそれがライブで見ることができます: http://jsfiddle.net/QPBvJ/

コードは次のとおりです。

    $(document).ready(function(){
     $('#get').live('click', function() {

        var currentIFrame = $('#frameDemo');
        currentIFrame.contents().find("a").css("background-color","#BADA55");

        alert ("done")
    });
    });

<iframe src="http://api.jquery.com/" width="80%" height="600" id='frameDemo'></iframe>
<button id="get">Get</button>

これを機能させる最も簡単な方法は何でしょうか。ありがとうございました

16
Mircea

これを機能させる方法はありません。アクセスしようとしている外部ドメインが C.O.R.S[〜#〜] jsonp [〜#〜] または postMessage のような手順をサポートしていない限り。

(いつものように)いくつかの例外があります:

たとえば、WebAppを扱っている場合は、ユーザーにcross-domain-callsへのアクセスを許可する必要があることを伝えることができます。

たとえば、Gecko/Firefoxでは、

netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead')

これにより、ブラウザはajax/iframesを介して外部ドメインにアクセスできるようになります。このシナリオでは、ユーザーは設定する必要があります

signed.applets.codebase_principal_support

これを機能させるには、about:configの下のtrueに移動します。

この世界のInternet Explorersには、securityタブに深く隠されたallow cross-domain accessのような設定があります。これはenableに設定する必要があります。

Chromeは、コマンドライン引数を使用したクロスドメイン呼び出しを許可します。

chrome.exe --disable-web-security
27
jAndy