Встала задача подключить чужую страничку в модальном окне внутри своего приложения (то есть надо посмотреть карту - показали окно с картой, не надо - спрятали). Не мудрствуя лукаво, использовал IFRAME, и тут же напоролся на Firefox и WebKit.
Если по-русски, то практически все браузеры кроме IE (и то IE8+ надо ещё проверить) при перемещении IFRAME в дереве DOM очищают его содержимое. То есть:
Судя по багтрекерам, в Firefox эта проблема толком не решена до сих пор (в Firefox 11 ещё не решена, и вроде что-то сделано в ночных сборках Firefox 13), в WebKit придуман "обходной манёвр":
document.adoptNode(iframe); // This does removeChild() internally but does not unload content
document.body.appendChild(iframe);
Если по-русски, то практически все браузеры кроме IE (и то IE8+ надо ещё проверить) при перемещении IFRAME в дереве DOM очищают его содержимое. То есть:
- Мы хотим показать IFRAME внутри модального окна
- Для этого надо выдернуть его (removeChild) оттуда, где он был спрятан, и добавить (appendChild) внутри нашего созданного окошка.
- После removeChild браузер чистит весь вложенный в IFRAME документ.
- На момент показа в новом месте IFRAME оказывается девственно чист, и с чистой совестью начинает загрузку своего содержимого согласно указанному атрибуту src.
Судя по багтрекерам, в Firefox эта проблема толком не решена до сих пор (в Firefox 11 ещё не решена, и вроде что-то сделано в ночных сборках Firefox 13), в WebKit придуман "обходной манёвр":
document.adoptNode(iframe); // This does removeChild() internally but does not unload content
document.body.appendChild(iframe);
Комментариев нет:
Отправить комментарий