2015-12-07 3 views
3

Мы динамически создаем 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? Известный обходной путь?

+1

проклятый ваш вопрос трудно понять! Я изменил параметры безопасности моего 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. –

ответ

1

К сожалению, IE does not support DATA URI's * с несколькими оговорками. У меня такая же проблема, но с PDF-файлом во встроенном теге.

Похоже, что вы можете использовать msSaveOrOpenblob, чтобы IE открыть файл блоб

+0

Мы столкнулись с 'msSaveOrOpenBlob' как ну, но на самом деле он не делает то, что мы хотим. Вызывается с URL-адресом blob, он откроет это «вы хотите открыть или сохранить этот файл?» Диалог/уведомление. Но мы хотим, чтобы iframe использовал url blob как свой src. –

+0

Насколько мне известно, это невозможно сделать в IE11 для html-шаблонов, как то, что вы делаете. Работайте, если вы используете какой-то язык на стороне сервера, это значит, что src указывает на службу, возвращающую вашу разметку. – gh9

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