2

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

对于框架集:

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

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

于 2013-09-01T23:46:02.403 回答