2

Web ページのコンテンツにアクセスするための Chrome 拡張機能 (コンテンツ スクリプト) を開発しています。DOM を使用して、ページ内のすべての要素にアクセスします。Web ページに「frameset」が含まれていると、コードが正しく動作しません。この問題では、フレーム番号を数えることはできますが、フレームの内容にアクセスできません。このコードを使用して、現在のページで使用可能なフレーム オブジェクトをカウントします。

フレームセットの場合:

parent.frames.length

および iframe の場合:

document.getElementsByTagName("iframe").length

しかし、次のコードは機能しません:

parent.frames[0]

「未定義」を返します。

私の質問: Chrome 拡張機能内のフレーム セット要素 (iframe とフレームセットの両方) にアクセスするにはどうすればよいですか?

4

2 に答える 2

1

Jerinawがそれにアプローチした方法と同様に、jQuery を介して次のことを行いました。

// Find the frame
var frame = $(document).find("frame[name='nameOfFrame']")[0];
// Callback once frame's internals are loaded
$(frame).load(function() {
  accessFrame();
});

function accessFrame() {
  // The following line is really important to accessing the frame's content.
  var frameContent = frame.contentDocument;
  // Notice that $(".objectSelectorClass") won't discover the object you're hunting for.  You have to find it within the frame's contentDocument.
  var objectInFrame = $(frameContent).find(".objectSelectorClass");
  var objectInFrame_AlternateSyntax = $(".objectSelectorClass", frameContent)
  // do stuff to objectInFrame
}
于 2016-02-06T05:40:37.857 に答える
0

私は同じ問題に直面しています。フレームは iframe ではなく、フレームセット内にあります。私がしなければならなかったのは、フレームへのオンロード(何らかの理由で addEventListener が機能しない)でしたが、それは contentWindow を介して

例: メイン文書から

document.querySelector('#SomeFrameSelector').contentWindow.document.body.onload

この方法でフレームにアクセスすると、フレーム ドキュメントが表示され、オンロードを添付できるようになりました。同じセレクターを使用して起動すると、フレームのコンテンツを変更できました。

于 2013-09-01T23:46:02.403 に答える