我正在开发一个chrome扩展程序(内容脚本)来访问网页内容。我使用DOM访问页面中的所有元素。 当网页包含“框架集”时,我的代码无法正常工作。在这件事情我可以计算帧号,但我无法访问帧内容。 我使用此代码来计算当前页面上可用的框架对象:
for frameset:
parent.frames.length
和iframe:
document.getElementsByTagName("iframe").length
但以下代码不起作用:
parent.frames[0]
并返回“undefined”。
我的问题: 如何访问chrome扩展中的框架集元素(对于iframe和框架集)?
答案 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。一旦使用相同的选择器触发,我就能够修改帧内容。