Для комментариев зарегистрироваться или войти
Либо используйте ваш Open_ID, например аккаунт гугл, яндекс или ЖЖ
 

11 июля 2009 :Iframe против Object, когда использовать?

Кто-то знает, а кто-то нет, что в существует 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 содержимое или переменную из родительского элемента (и изменить), я буду очень признательна.


я буду очень признательна если вы прокоментируете эту статью

Комментарии:


Чтобы оставить комментарий нужно зарегистрироваться или войти.
Либо волшебно используйте ваш логин в Google, Яндекс, рамблер или ЖЖ чтобы войти через Open_ID
Оставить комментарий как:
Гость:
Сообщение:
Подпишитесь на статьи через RSS

15 самых популярных статей: