Кто-то знает, а кто-то нет, что в существует 2 способа вставить одну html страницу в содержимое другой - это iframe и object, результат будет примерно одинаков.
<iframe src="sample_js.html" width="500" height="300" frameborder="0"></iframe>
<object type="text/html" data="sample_js.html" width="500" height="300"></object>
Некоторые, исследуют какую-то чушь, пытаясь понять как избавиться от полосы прокрутки и рамки у объекта в IE (зачем-то меняя доктайп). Хотя можно либо добавить CSS в включаемый документ:
<style> /*Style for IE object*/ html { overflow: auto; border: none;} </style>
либо почитать спецификацию W3C о фреймах «Implementing HTML Frames», где сказано что через <param> можно применять аттрибуты как у iframe, в результате:
<IFRAME src="foo.html" width=400 height=500 scrolling=auto frameborder=1> that unfortunately your user agent doesn't support. Alternatively you can get the related document <a href="foo.html">here</a>. </IFRAME>
Становится:
<OBJECT src="foo.html" width=400 height=500> <PARAME name=scrolling value=auto> <PARAME name=frameborder value=1> that unfortunately your user agent doesn't support. Alternatively you can get the related document <a href="foo.html">here</a>. </OBJECT>
Когда использовать Object
Тега Iframe нету в спецификации HTML 4.01 Strict, поэтому чтобы добиться валидности (если это кого-то волнует) в этом режиме нужно использовать его.
Когда использовать Iframe
К сожалению тег Object не обеспечивает javascript взаимодействие между parent и child документами в IE (всех версий). А это 95% случаев когда мне надо его использовать. Поэтому альтернативы iframe в этом нет. Желающие могут убедиться проверив следующие примеры в IE и других браузерах.
Пример использования Object (яваскрипт не работает в IE)
Пример использования iframe (яваскрипт работает везде)
Код который используется в подгружаемом файле
var a=parent.document.getElementById('test'); alert(window.parent.document.title); a.innerHTML='Яваскрипт работает';
Поэтому если вам надо использовать JS, то либо используйте HTML 4.01 Transitional, либо просто наплюйте на валидность, браузеры всё равно будут отображать iframe даже в strict. А лучше всего конечно будет использовать HTML5, который всегда в строгом режиме, и разрешает тег iframe.
Если кто-то скажет как всё-таки получить из дочернего фрейма в object содержимое или переменную из родительского элемента (и изменить), я буду очень признательна.
Комментарии:
igrek.59rd@ (Igor Baranov)
27.01.2010 03:23:05
Moony (Елена Лунная)
27.01.2010 12:09:13