0

親ウィンドウにのみ含まれている場合、iframe から jQuery lib にアクセスすることは可能ですか? (時には数百) の iframe を読み込む親ウィンドウがあります。各 iframe で、いくつかの jQuery 関数を実行したいと考えています。以下を使用して、各 iframe で lib を定義する場合にのみ、これを機能させることができます。

<script src="/jquery.min.js" type="text/javascript"></script>

ただし、読み込みを高速化するために、上記のスクリプトタグを親ウィンドウにのみ含め、各子/iframe から親のライブラリにアクセスして、iframe に影響を与える関数を実行することをお勧めします。

返信ありがとうございます。子フレームにあるものは次のとおりです。

&lt;script>
var $ = parent.jQuery;

$(this, document).ready(function(){
    var step = 0.2;
    $('body', document).css('MozTransform','scale(0.2)');
});

&lt;/script>

そして、私が期待しているのは、子供のドキュメントが「準備完了」すると、それ自体が 20% まで縮小されることです。動作しないことを除いて。可能ですか、それとも子のコードを親ドキュメントに追加し、各フレームに ID を割り当ててから、それらをループする必要があります。

$( document ).ready(function(){ $('body').css('MozTransform','scale('

親ウィンドウが縮小されます。iframe を縮小したい。

4

2 に答える 2

1

iframeが親ドキュメントと同じドメインにあると仮定すると、親ウィンドウの jQuery への参照を簡単に取得できます。

var $ = parent.jQuery;

または、iframe複数レベルの深さで s をネストしている場合:

var $ = top.jQuery;

ただし、デフォルトでは、jQuery はドキュメントが含まれている場所からのみドキュメントをクエリします。iframe指定されたの DOMに対してクエリを実行する必要がある場合は、次の 2 つのオプションがあります。

この場合、 contextとして指定された'sdocumentを指しますiframewindow.document

$('#elementInsideIframe', document).doSomething();

iframeまたは、のドキュメントと.find()その子孫を含む jQuery オブジェクトを保存します。

var $dom = $(document);
$dom.find('#elementInsideIframe').doSomething();

ライブデモ


他の人が何と言おうと、キャッシングはあなたのユースケースには「十分」ではありません。jQuery にはかなりの init オーバーヘッドがあり、何百回も含めたくないものです。


OPの更新によると:

$(document).ready()フレームの内側で使用してください。(i)frame コンテキストでdocumentは、指定されたフレームの を指しwindow.documentます。

また、jQuery >= 1.8 を使用している場合、ベンダー プレフィックスを使用する必要はありません。標準のプロパティがサポートされていない場合、jQuery は適切なベンダー プレフィックス付きプロパティを使用します。

デモ:iframe

于 2013-10-27T17:39:56.073 に答える
0

親ウィンドウまたはトップ ウィンドウの html コードをいじるオーバーヘッドは、必要に応じて jquery をロードするためのスクリプトの余分な行よりも多くのコストがかかります。

各フレームに個別にロードします。おそらく jquery のオンライン バージョンを使用します。これにより、クライアントがサイトに入る前にライブラリがロードされる可能性が高くなります。

例では

<script src="http://code.jquery.com/jquery-latest.min.js"
        type="text/javascript"></script>
于 2013-10-27T17:01:41.963 に答える