2

contents()jQuery 経由で IFRAME に遭遇するのが困難です。実際にアクセスしようとしているのは、フレーム内のフレームです。フレームはすべて同じソース (同じドメイン、同じルート パスなど) からのものです。

私は現在、次の方法でフレームにアクセスしています:

var $frame = $(window.top.frames[1].document).find('#innerFrameName');

これは正常に動作しconsole.log、$frame の値が jQuery 配列であることがわかります。

[<frame src=​"mypage.htm" id=​"innerFrameName" frameborder=​"1" border=​"1" scrolling=​"auto" title=​"My Inner Frame" name=​"bsscright">​]

ただし、(このStackOverflow の質問で説明されているように) 以下を呼び出そうとすると、空の配列が取得されます。

var $contents = $frame.contents();
console.log($contents);       // => []

ドキュメント自体にアクセスしようとしても、できません。

var innerDocument = $frame.get(0).document;
console.log(innerDocument);   // => undefined

jQueryを使わずに試してみましたが、上記と同じ結果が得られました。

var innerFrame = window.top.frames[1].frames['innerFrameName'];
var innerDocument = innerFrame.document;
console.log(innerFrame);     // => the DOM object representing the IFRAME
console.log(innerDocument);  // => undefined

私は何を間違っていますか?

4

1 に答える 1

-1

これはテストされていません。フレームにアクセスするときにコンテンツを使用することになっています。私はそれが次のようになると思います:

var someDivs = $("#outerIframe").contents().find("#innerIframe").contents().find("div");
于 2012-05-10T23:28:23.983 に答える