2013-02-16 62 views
0

我工作的一個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並不是最可靠的框架,所以我想這也可能是問題。

預先感謝任何意見或援助。

回答

0

也許這個問題的答案question會有所幫助。

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