我正在开发一个chrome扩展程序,用于从网页中提取元数据和一些文本元素。当该信息包含在给定页面的框架内时,我遇到了挑战。
对于我正在使用的页面,请使用以下示例框架集(为简洁起见,实际框架名称,标题和来源已更改)。
<frameset id="fs" border="0" frameborder="no">
<frame src="/src1" name="frame1" noresize="noresize" scrolling="no" frameborder="0" title="FrameNumber1">
<frame src="/src2" name="frame2" noresize="noresize" scrolling="no" frameborder="0" title="FrameNumber2">
<frame src="/src3" name="frame3" noresize="noresize" scrolling="auto" frameborder="0" title="FrameNumber3">
<frame src="/src4" name="frame4" noresize="noresize" scrolling="no" title="FrameNumber4">
</frameset>
并且,请考虑以下针对FrameNumber3的html代码段:(这是更为人为的,仅用于示例目的)
<html>
<head>
<title>FrameNumber3</title>
</head>
<body>
<h1 id="heading">This is what I want</h1>
</body>
</html>
我尝试了许多不同的方法,其中大多数都围绕jquery选择器中适当的上下文参数进行不同的猜测。
我已经尝试了几打,但这里有一些我认为可以实际工作的例子:
通过Run JQuery in the context of another frame
alert($('#heading', window.parent.frames[0].document).text());
//Uncaught TypeError: Cannot read property 'document' of undefined
alert($('#heading', window.parent.frames[2].document).text());
//Tried this, because I want the 3rd frame's information
//Uncaught TypeError: Cannot read property 'document' of undefined
通过Accessing an element in a frame using a jQuery reference to the frame
alert($('#heading', $('frame').get(2).contentWindow.document).text());
//Uncaught TypeError: Cannot read property 'document' of undefined
通过其他页面:
alert($('#heading', $('frame[title="FrameNumber3"]').document).text());
//no error but returns "undefined"
alert($('#heading', $('frame[title="FrameNumber3"]').contents()).text());
//no error but returned "undefined"
我不认为这是Chrome扩展程序中的权限问题,因为我已经处理了这个问题。我认为可能有一些我不了解的关于进入框架DOM的东西。我还读到,当涉及到帧时,jquery不是最可靠的,所以我想这也可能是问题。
提前感谢您提供任何反馈或帮助。
答案 0 :(得分:0)
也许这个question的答案会有所帮助。
document.querySelector('#SomeFrameSelector').contentWindow.document.body.onload