1

ページ内にIframeがあり、srcが同じローカルマシン(クロスドメインではない)上のファイルに設定されています。

だから私はこのようなページを持っています:

<html>
 <head/>
 <body><iframe id="something" src="somepage.html"/></body>
</html>

iframeの中にはいくつかのコンテンツがあります

    <html>
    <head/>
     <body>
      <li>
        <ul>stuff</ul>
      </li>
     </body>
    </html>

私の質問は、現在var element = <ul>stuff</ul>iframe内にある要素を指している変数(インデックスページ内)があります。

この変数から、親iframeにアクセスして、ID'something'を取得できるようにします。

私は運がないのにfindを使っていくつかのjqueryを試みてきました

$(element).find('iframe')

そして、私はどこが間違っているのか疑問に思っています...私は他の解決策をグーグルで検索しましたが、それらはすべてiframeの外を覗き込んでいることに関連しています、私は外を眺めていると思います!光を当てるのを手伝ってくれる人は他にいますか?

4

2 に答える 2

1

最初は、iframe内のデータにアクセスする場合は、iframeの名前を設定することをお勧めします。その後、iframeのDOMにアクセスするには、次を使用できます。

$('ul', window.frames['iframe_name'].document);

グローバル変数にアクセスするには

alert(window.frames['iframe_name'].some_global_var_or_function_of_iframe)

iframe内で親データを取得したい場合:

$('selector', parent.document) // for DOM
alert(parent.some_global_var_or_function_of_parent_window)

編集 だからあなたの場合はただ使用してください:

$('iframe', parent.document).filter(function(iframe){
    // you can compare iframes like this
    return iframe.getAttribute('src') == location.href
}).attr('id')
于 2012-08-17T09:07:14.707 に答える
1

名前のようなものがないと、iframe要素のIDを見つけるのは非常に難しいようです。

ただし、iframe内のhtmlファイルの名前( "somepage.html")がわかっている場合は、これを実行して、親ドキュメント内のiframeを含む要素を取得できます。

var $matching = $(parent.document).find('iframe').filter(function(){
    var srcTokens = this.src.split('/');
    return srcTokens[srcTokens.length-1]=='somepage.html';
});

これが私がテストに使用した「somepage.html」ファイルで、コンソールにIDを記録します。

<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        </head>
     <body>
      <li>
        <ul>stuff</ul>
      </li>
      <script>
          var $matching = $(parent.document).find('iframe').filter(function(){
              var srcTokens = this.src.split('/');
              return srcTokens[srcTokens.length-1]=='somepage.html';
          });
          console.log($matching.attr('id'));
          </script>
     </body>
    </html>

編集:Serjioが見たようlocation.hrefに、htmlファイルの名前がわからない場合に使用することができます。

于 2012-08-17T09:18:17.997 に答える