Мы динамически создаем s (например, для текстового редактора или окна отладки) и вставляем html в src
. В течение многих лет мы использовали код javascript:
как src
, похожий на this answer, до тех пор, пока мы не столкнулись с проблемами политики с несколькими независимыми фреймами.Использование URL-адресов Blob для src в IE11
Наше текущее решение создает объект URL для сгустка, который содержит HTML:
var iframe = document.createElement('iframe')
, html = '<h1>it works!</h1>'
, blob = new Blob([html], {type: 'text/html'})
, url = URL.createObjectURL(blob);
iframe.src = url;
document.querySelector('body').appendChild(iframe);
Это прекрасно работает в Chrome и Firefox, но не в IE11 (для браузеров, где URL
или Blob
не определены, мы возвращаемся к решению javascript:
). IE11 поднимает SCRIPT5
: Access is denied
.
Неправильно ли мы используем API? Есть ли специальный API для IE? Известный обходной путь?
проклятый ваш вопрос трудно понять! Я изменил параметры безопасности моего IE11 на минимально возможную конфигурацию, и я изолировал iframe (http://www.html5rocks.com/en/tutorials/security/sandboxed-iframes/), но фрагмент кода didn ' работа! Есть одна ошибка IE, с которой я видел связанную с этим, которая не имела никакого обновления (https://connect.microsoft.com/IE/feedback/details/797361/ie-10-treats-blob-url-as-cross-origin -and-denies-access) По-видимому, IE видит это как XSS, хотя его URL-адрес Blob ... я не думаю, что в API есть что-то неправильное, поскольку Blobs поддерживаются в IE11. –