2011-04-19 55 views
3

是否可以在background-html擴展中的background.html頁面上創建iframe並讓它向網站發出請求?我不確定擴展是如何工作的。 Chrome是否會自動忽略所有顯示標籤,或者它會不可見地運行它?在Chrome擴展中創建隱藏的iframe

回答

2

我的理解是,從不顯示擴展的背景頁面,但它應該按預期「運行」(例如img標記的src屬性將導致圖像數據被提取)。我是新的實現擴展,但the architecture overview似乎意味着這一點,就像我見過的樣本。

您可以點擊擴展控制面板中background.html的鏈接,並檢查源/目錄/ etc。

0

經過測試我自己:顯然google-chrome確實運行iframe。它只是不會顯示它們。

5

它會加載iframe好,但我不認爲有可能由於同源限制而從iframe中讀取任何內容。例如,這種背景腳本失敗:

<body> 
<script> 
var iframe = document.body.appendChild(document.createElement('iframe')); 
iframe.src = 'http://www.google.com'; 
iframe.onload = function() { 
    console.log(iframe.contentDocument.innerHTML); 
}; 
</script> 

,出現錯誤:「不安全JavaScript嘗試與URL http://www.google.com/從幀幀訪問使用URL鉻擴展名://elbpnmnjddamdmjmdnmhankaimaldhmf/background.html域,協議和端口必須比賽。」

+0

因爲在安裝擴展程序時,您可以向其他域請求權限(即:google.com或其他),Chrome擴展程序不會像普通頁面那樣僅限於跨源請求。該caviot是,你必須要求用戶的許可,無論是在安裝或隨後。 – frosty 2012-04-17 23:10:53

+2

@aaronfrost,是的,您可以申請許可。 '「http://www.google.com/*」',但目前它只適用於跨源XMLHttpRequests,注入內容腳本和讀取cookie。它不適用於在背景頁面內閱讀iframe。也許你可以提交功能請求。或者,這可能與http://crbug.com/20773相同 – yonran 2012-04-18 23:43:22