3

jQuery と別の JS ファイルを iframe に挿入しようとしています。それが可能かどうか疑問に思っていましたか、それについて何か問題がありますか?

これらのページが同じドメイン名で実行されているとしましょう。

親ページは、Javascript を使用して iframe 内の要素をオーバーライドしようとします。
次に、サブページ (http://jsbin.com/esifez/2) に別の jQuery ライブラリを追加する必要があります。

これについて何か考えはありますか?

$(function() {
  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = 'http://code.jquery.com/jquery-latest.min.js';
  $("#main_iframe").contents().find("body").append(script);
});

デモリンク.

ありがとうございました

4

1 に答える 1

1

デモ リンクでは、iframe にアクセスしようとする JavaScript が既に含まれてい$ます。まだ存在しないため、これはエラーを発生させます。次の 2 つのいずれかを行う必要があります。jQueryfind("body").append(script);$

  1. jQuery スクリプト タグを iframe のソースのヘッドに手動で含めます。iframe ソースに jQuery コードがあることを考えると、とにかくこれを実行してみませんか?

  2. jQuery スクリプト タグを挿入した後にのみ実行される関数または個別のスクリプト内に参照がない限り、アクセスしようとしているスクリプトjQueryやiframe のソース内にスクリプトを配置しないでください。$

基本的にポイント 2 については、これを iframe に直接入れないでください。

<script>
  /// dolar wont exist yet
  $(function(){

  })
</script>

代わりに、親コードで次のようにします。

var insertScript = function(src){
  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = src;
  $("#main_iframe").contents().find("body").append(script);
}

$(function() {
  insertScript('http://code.jquery.com/jquery-latest.min.js');
  // any code in your iframe that relies on jQuery should be 
  // moved off into this file
  insertScript('iframe-js-code-that-requires-jq.js');
});

ただし、動的に挿入するのではなく、iframe ソース内に既に jQuery スクリプト タグを配置しておく方が理にかなっています。

于 2012-11-18T11:40:25.877 に答える