我工作的一個Chrome擴展程序,提取元數據,並從網頁某些文本元素訪問框架的DOM。當信息包含在給定頁面的框架中時,我遇到了挑戰。使用javascript/jQuery的在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>
而且,考慮下面的HTML代碼段用於FrameNumber3:(這是比較做作,只是爲了例子的目的)
<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"
我不認爲這是鉻擴展中的權限問題,因爲我已經處理好了。我認爲這可能是我不瞭解如何進入框架DOM。我也讀過jquery並不是最可靠的框架,所以我想這也可能是問題。
預先感謝任何意見或援助。