2013-04-21 1 views
2

Я не думаю, что это было возможно, однако, я нашел эту цитату:Как программно удалить атрибут песочницы из фрейма с JavaScript

"It is strongly discouraged to use both allow-scripts and allow-same-origin at the same time, as that allows the embedded document to programmatically remove the sandbox attribute."

Моего IFrame необходимо иметь песочницу , но только когда я просматриваю определенные URL-адреса, где внедренный контекст просмотра пытается перемещать (загружать) контент в контекст просмотра верхнего уровня (Jump out of frame ...)

На других страницах песочница должна быть полностью удалены, так как он не позволит мне отвлекаться от сайта с другим происхождением ...

Рамка, пытающаяся навигация, изолирована песочницей и поэтому не разрешена для навигации по ее предкам.

Programatically изменения песочницу с:

document.getElementById("frame").sandbox = ""; 

... не работает или как это по-прежнему накладывает ограничения ... Поэтому мне нужно каким-то образом удалить атрибут целиком, как бы я идти об этом это?

+0

Я думаю, вам просто нужно будет сбросить IFRAME вместо изменения атрибута. это означает, удалить iframe и воссоздать его. – Timmerz

ответ

4

Эти флаги вступают в силу только в том случае, если вложенный контекст просмотра в iframe перемещается. Удаление их или удаление всего песочницы атрибут не влияет на уже загруженную страницу.

Подробнее - Here

+1

Эта страница, на которую вы мне написали, говорит: «Устанавливайте вместе оба сценария allow-scripts и allow-same-origin, когда встроенная страница имеет то же происхождение, что и страница, содержащая iframe, позволяет встроенной странице просто удалить атрибут песочницы, а затем перезагрузите себя, эффективно вырвавшись из песочницы ». – David

+3

Да, но страница должна быть от одного источника. –

Смежные вопросы