2011-07-13 90 views
5

您能否幫助我理解HTML5的Chrome實現iframe沙箱屬性允許使用相同的原則並允許頂級導航?HTML5 iframe沙箱屬性問題

第一個問題:

例如,當我測試允許-同源我做的:file.html的

<iframe id='frm' src="file.html" sandbox="allow-same-origin"></iframe>  
...  
oIFrame = document.getElementById('frm'); 
var oDoc = (oIFrame.contentWindow || oIFrame.contentDocument);  
if (oDoc.document)  { 
oDoc = oDoc.document; 
oDoc.getElementById('foo').innerText = 'Hello man!'; 
... 

內容:

... 
<div id="foo">Hello</div>  
... 
alert(document.cookie); 
... 

,只有工作當我有另外的屬性稱爲允許腳本,所以我有沙箱=「允許腳本允許相同來源」。單獨的allow-same-origin不起作用,單獨的allow-scripts工作得很好(腳本運行,但不是與API SOP相關,可以考慮HTML5標準)。

HTML5的標準說:

「首先,它可以用來允許來自同一個網站的內容被沙盒禁用腳本,同時仍然允許進入沙箱內容的DOM。」

我誤解了或Chrome的實現是錯誤的嗎?

第二個問題:

HTML5的標準說關於允許頂導航:

「第二,它可以被用來從第三方網站上嵌入內容,沙箱,以防止網站從打開彈出式窗口等,而不阻止嵌入式頁面與其原始站點通信,使用數據庫API存儲數據等。「

Chrome中的我的彈出窗口未被阻止。我怎麼能阻止他們?我只使用allow-top-navigation。

乾杯, 大衛

回答

0

對於第一個問題: 看來,這意味着父頁面仍然可以訪問該沙盒的DOM,而在本身被阻止執行腳本;所以才parent -> iframe但不iframe -> parent

第二個問題: 也許我誤會,但正如其名稱allow-top-navigation意味着這將允許而不是使用像top.location.replace()東西擋住陷害網站。