2011-01-28 4 views
2

the demo is here
(не может воспроизвести его на jsfiddle, так как они не позволяют Аякса достаточной степени)Internet Explorer 8 обрезает Iframe содержание

Представьте, у вас есть IFRAME на странице

<iframe id="if1" src="/some/url"> </iframe> 

/some/url возвращает простой текст: <form>text</form><br/>

А также, после загрузки IFrame, вы получите его из Javascript.

var io = document.getElementById('if1'); 
alert(io.contentWindow.document.body.innerHTML); 

Нормальные браузеры, очевидно, возвращают содержимое именно так, как есть. Но Internet Explorer 8 возвращается что-то смешное

text</FORM><BR> 

Даже если щелкнуть правой кнопкой мыши/вид источника на IFRAME показывает правильное содержание: <form>text</form><br/>

Я не попробовать другие версии IE.

Вы видели этот вопрос раньше? Это очень упрощенная версия проблемы, с которой я встречался при адаптации webapp к IE. В принципе, я делаю ajax-запросы через iframe (не xhr, мне нужно загружать файлы), а html-фрагменты возвращаются.
Большое спасибо!

+2

Хммм. Пробовали ли вы предоставить внутреннему кадру полную, действительную структуру (' ....')? –

+0

Кроме того, я замечаю, что вы не отправляете 'content-type' вместе с исходным документом. Это не должно меняться, потому что .html будет автоматически интерпретироваться как HTML, но было бы неплохо отправить его по адресу –

+0

, согласованному с первой точкой в ​​Pekka - iframe ожидает, что его содержимое будет полным HTML-документом. – Spudley

ответ

3

Добавление body вокруг ответа работал, смешно, я не думаю об этом сразу же.

И самое лучшее, нет необходимости менять внешний интерфейс: document.body.innerHTML вернет контент без body тег (естественно).

0

Вы пытались использовать jQuery, чтобы убедиться, что это лучше?

alert($('#if1').html()); 
+0

Получение содержимого iframe немного сложнее, чем '.html()' –

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