В принципе, я хотел бы иметь что-то вроде этого (это ES6):Как предотвратить iframe от доступа к родительскому окну, но разрешить родительскому окну получить доступ к документу iframe?
<iframe id="iframe"></iframe>
<script>
var iframeDoc = document.getElementById('iframe').contentDocument;
iframeDoc.open('text/html', 'replace');
iframeDoc.write(`
<!doctype html>
<html>
<body>
<script>
// do not allow window.parent access!
alert(window.parent.document.cookie);
<\/script>
</body>
</html>
`);
iframeDoc.close();
</script>
Внимательный окно отображает печенье родительского окна, которое плохо. Я бы хотел, чтобы iframe выполнил свой собственный изолированный javascript-код. Возможно ли это в HTML5?
Я пробовал каждую перестановку атрибута sandbox
и его значений.
Возможно, можно построить iframe с его содержимым в качестве URI данных для атрибута src
, но это похоже на хакерство. (Или, может быть, нет? Нет ограничений на длину URI?)
Да, я говорил в вопросе, что я попытался с помощью 'sandbox', но он не позволяет для конкретного требования, что у меня есть (он может блокироваться в обоих направлениях, iframe для родителя или родителя для iframe, но не только в одном направлении). –
Проверьте это сообщение в блоге о том, как это сделать с помощью JS и песочницы. https://benfrain.com/sandbox-local-htmlcss-code-snippets-inside-iframe-style-guidespattern-libraries/ – Munsterlander
Обновленный ответ с лучшей публикацией блога. – Munsterlander