Chrome扩展程序:访问框架元素

时间:2013-02-02 19:35:59

标签: dom google-chrome-extension frame

我正在开发一个chrome扩展程序(内容脚本)来访问网页内容。我使用DOM访问页面中的所有元素。 当网页包含“框架集”时,我的代码无法正常工作。在这件事情我可以计算帧号,但我无法访问帧内容。 我使用此代码来计算当前页面上可用的框架对象:

for frameset:

parent.frames.length

和iframe:

document.getElementsByTagName("iframe").length

但以下代码不起作用:

parent.frames[0]

并返回“undefined”。

我的问题: 如何访问chrome扩展中的框架集元素(对于iframe和框架集)?

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

我遇到了同样的问题。这些帧不是iframe,而是在框架集中。我必须做的是一个onload(由于某种原因,addEventListener不工作)到框架,但通过它的contentWindow

例如: 来自主要文件

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

以这种方式访问​​框架让我进入框架文档并允许我附加onload。一旦使用相同的选择器触发,我就能够修改帧内容。