4

クライアントのWebサイトで使用できるログインウィジェットをiframeに作成しようとしています。このiframeはjQueryを使用しますが、最初に、親ドキュメントにjQueryがロードされているかどうかを確認できません。ロードされていない場合は、ロードされます。

私はいくつかの異なる手法を試しましたが、どれもうまくいかないようです。または、jQueryライブラリを2回ロードすることにしました。

どんな助けでも大歓迎です。

このコードブロックは、iframe内に読み込まれたページ内にあり、協調を拒否します。

<script>

var jQOutput = false;

function initjQuery() { 

if (typeof(jQuery) == 'undefined'){     
    if (!jQOutput){         
        jQOutput = true;

        var jScript = document.createElement('script');
        jScript.setAttribute("type", "text/javascript");
        jScript.setAttribute("src", "js/libs/jquery/jquery-min.js");
    }
    setTimeout("initjQuery()", 50);
} else {
    $(function() {
        $("#email").css({"background":"red"});
        //visual aid to see if jQuery is loaded.
    });
} 
}
</script>

iframeの親がjQueryをロードしたかどうかを確認し、ロードしていない場合は、ログイン手順を完了するために必要ないくつかのタスクを実行するために使用するため、自分でロードします。

4

2 に答える 2

1

Entented comment:

I dont think what you want to archive is posible because of same origin policy (Cross domain access via JavaScript) - look it op on Google... http://google.com/search?q=same+origin+policy


If you on the other hand dont violate the same origin policy you can archive what you want using something like this:

var parent = window.parent; // This refers to parent's window object

if ( parent && parent.jQuery ) { // Check to see if parent and parent.jQuery is truly
    window.jQuery = parent.jQuery;
    window.$ = parent.jQuery;
}
else {
    // load jQuery here
}
于 2012-10-01T10:12:28.120 に答える
1

ウィジェットの JavaScript コードは 2 つの部分に分割する必要があります。それらの 1 つはクライアントのサイトにロードされます。サイトの DOM にアクセスする権限があります。必要に応じて jQuery をロードしたり、iframe を作成したりします。 ) この部分は iframe の DOM にアクセスできないことに注意してください。そのため、iframe 内にロードされる 2 番目の部分が必要です。パーツにクロスドメイン技術を使用して、相互にメッセージを交換できます。easyXDM ライブラリを確認することをお勧めします。

于 2012-10-01T11:15:02.630 に答える