Не могли бы вы помочь мне понять реализацию Chrome HTML5-атрибутов iframe в изолированной программной среде allow-same-origin и allow-top-navigation?
Первый вопрос:
Например, когда я проверяю allow-same-origin, я делаю:
<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!';
...
Содержимое файла file.html:
...
<div id="foo">Hello</div>
...
alert(document.cookie);
...
и это работает только тогда, когда у меня есть дополнительный атрибут, называемый allow-scripts, поэтому у меня есть sandbox = "allow-scripts allow-same-origin". Один allow-same-origin не работает, а один allow-scripts прекрасно работает (скрипты работают, но не связаны с API SOP, это нормально по стандарту HTML5).
Стандарт HTML5 гласит:
"Во-первых, его можно использовать, чтобы разрешить изолированную программную среду для контента с того же сайта, чтобы отключить сценарии, но при этом разрешить доступ к DOM изолированного содержимого."
Я неправильно понимаю, или реализация Chrome неверна?
Второй вопрос:
Стандарт HTML5 говорит о разрешении-топ-навигации:
"Во-вторых, его можно использовать для встраивания контента со стороннего сайта, в изолированную программную среду, чтобы этот сайт не открывал всплывающие окна и т. Д., Не препятствуя обратной связи встроенной страницы со своим исходным сайтом, используя API базы данных для хранить данные и т. д. "
Мои всплывающие окна в Chrome не блокируются. Как я мог заблокировать их? Я использую только allow-top-navigation.
Ура,
David