Главная
К библиотеке

IFRAME

Главным недостатком фреймов всегда была невозможность выделения в произвольном месте страницы прямоугольной области заданных параметров WIDTH и HEIGHT. Ситуация изменилась с появлением тэга IFRAME - дополнения Майкрософт к HTML.

Всю ценность IFRAME уже начинаешь сознавать, когда работаешь с фреймами в первый раз. Да, используя фреймы можно "разрезать" страницу на части, создавать удобные навигационные панели и красивые дизайнерские изыски. Но практически тут же у дизайнера встает вопрос - а можно ли в произвольном месте страницы выделить прямоугольную область со своей полосой прокрутки и загружать в нее внешний *.html документ? Оказывается, все-таки можно.

Тэг IFRAME является дополнением Microsoft к языку гипертекстовой разметки. На мой взгляд, это был бы самый значительный вклад в развитие языка HTML за последние несколько лет, если бы не одно "НО": этот тэг не поддерживается ни одним браузером, за исключением Internet Explorer'a (ну и всяких там Neoplanet'ов, которые есть суть с ним одно). Всю ответственность я, в данном случае, склонен возлагать на разработчиков Netscape Navigator'a, которым, судя по всему, было в очередной раз лень поддержать перспективную (до сих пор памятна кривая реализация CSS и даже родного "Нешкафу" JavaScript) технологию. Более того - очевидную технологию. Я в свое время был прямо-таки поражен отсутствием полноценной реализации фреймов в HTML именно из-за отсутствия этого тэга. Впрочем, добрый Майкрософт был достаточно добр, чтобы дать возможность пользователям насладиться всеми удобствами IFRAME, одновременно оставляя лазейку для остальных пользователей.
Итак, давайте разберем поподробнее тэг IFRAME:

<IFRAME SRC="document.htm" WIDTH=XXX HEIGHT=XXX NAME="XXX" SCROLLING="yes/no/auto" [NORESIZE]>
</IFRAME>

Как мы видим, синтаксис IFRAME схож с синтаксисом обычного <FRAME>: вы можете задавать наличие/отсутствие полос прокрутки, запрещать/разрешать изменение размеров окна. Кроме того, поскольку данный фрейм есть ни что иное, как прямоугольная область со всеми вытекающими из этого последствиями, Вы можете задать для него размеры WIDTH и HEIGHT. Ссылка на документ - SRC="document.htm" - загружает документ "document.htm" в сформированную IFRAME область страницы. Более того, задав имя фрейма - NAME (лично я предпочитаю давать имя "iframe" по вполне очевидным причинам) - Вы сможете загружать любую желаемую страничку в получаемое при помощи IFRAME окно.
Да, пользователи NN ваши дизайнерские изыски не увидят, но между тэгами <IFRAME> и </IFRAME> можно вставить HTML код, который будет обрабатываться браузерами не знающими тэга IFRAME. Таким образом, Вы, в самом крайнем случае, можете там просто продублировать содержимое IFRAME, выведя его, скажем, в виде таблицы с соответствующей шириной WIDTH и высотой HEIGHT. При этом возникает всего одна загвоздка - Вы не сможете задать фиксированную высоту колонки. Таким образом, если, скажем, текст не будет влезать в ячейку таблицы, высота ячейки будет автоматически увеличена. IFRAME позволяет более жестко контролировать параметры WIDTH и HEIGHT, и, кроме того, позволяет настраивать параметр SCROLLING - так что получаемая в конце концов страничка будет совершенно по-разному выглядеть под iE и NN.

Теперь давайте немного пофантазируем на тему: зачем нам все-таки нужен тэг IFRAME. Ведь из приведенного выше следует, скорее, что он малоприменим для наших дизайнерских целей.
Во-первых, кто сказал, что страничка должна абсолютно одинаково выглядеть под всеми (ну, хотя бы под двумя - iE и NN) браузерами? На мой взгляд, в идеале страничка должна верстаться под каждый из браузеров в отдельности, дабы обойти кое-какие подводные камни (в частности, некоторую кривоватость реализации практически всех функций в NN, что, признаю, зачастую есть следствие распространенности iE со всеми вытекающими последствиями, вроде склонности вэб-дизайнеров дизайнить странички вначале под iE, а затем уже доводить их до ума в NN). Так что применение таблицы между тэгами IFRAME не такая уж и плохая мысль.
Во-вторых, применяя IFRAME, Вы можете активно и часто менять содержимое отдельно взятого окна без изменения самой страницы. Конечно, читатель может воскликнуть: можно ведь использовать, скажем, SSI - и будет в корне не прав. Ибо кто из простых смертных и, тем более, начинающих вэб-дизайнеров, может позволить себе хоститься на сервере, поддерживающим все эти навороты. Ответ напрашивается сам - лично я не могу, а потому вынужден пользоваться различными хитрыми приемами, дабы облегчить и без того сложную свою жизнь, обновляя лишь одну страничку вместо десятка-другого за раз. IFRAME активно используют для вывода баннеров, в частности, формата 468x60, кроме того, IFRAME - идеальное решение для вывода внешней странички со счетчиками. Таким образом, вставляя код счетчика в одну страничку и показывая ее на всех страницах сайта, вы получаете самую подробную статистику посещений. Скажу больше - если Вы используете службу статистики SpyLOG, то вы даже сможете получать статистику о точках входа (т.е. на какую страничку Вашего сайта пришел посетитель) - и это будет отнюдь не "iframe"!

Многие сайты обмениваются ссылками, при этом не имея ни малейшего представления куда эти самые ссылки девать. Многие разбрасывают их по главной странице, безнадежно убивая дизайн и снижая эффективность ссылок и баннеров (ибо многие посетители разочарованно закрывают окно - которое не обязательно будет главной страницей сайта - едва увидев его содержимое). Некоторые делают отдельную страничку со ссылками и вставляют в меню кнопку "ссылки", тем самым отпугивая от нее процентов 90 посетителей. Другое дело, когда все они открываются в IFRAME, постоянно оказывая воздействие на посетителя Вашего сайта, и вместе с тем несут нагрузку в качестве оригинального элемента дизайна.
Наконец, вы можете легко обойти часть ограничений IFRAME и вставить между тэгами IFRAME popup-menu принятых в IFRAME размеров. С одной стороны, popup-окна априорно есть зло - их никто не любит (в том числе и я). С другой - надо же как то дать возможность пользователям Netscape увидеть примерно то же, что имеют возможность лицезреть пользователи iE. Тем более, если дизайн сайта заточен под IFRAME. Выглядеть вся эта конструкция будет примерно так:

<IFRAME SRC="document.htm" WIDTH=260 HEIGHT=380
NAME="iframe" SCROLLING="auto" NORESIZE>
<SCRIPT> document.open('document.htm','iframe','top=20,
left=20,width=260,height=380,directories=no,status=no,
scrollbars=yes,resize=no,menubar=no')</SCRIPT>
</IFRAME>

Поскольку рамки данной статьи не позволяют провести экскурс в JavaScript, я ограничусь лишь заострением Вашего внимания на следующих параметрах: TOP и LEFT дают команду браузеру выводить окно с соответствующим отступом от верха и слева; c WIDTH и HEIGHT, я думаю, все и так ясно, также как и со SCROLLBARS и RESIZE. Дерзайте!

В заключение хотелось бы еще раз отметить, что IFRAME есть давно, и отсутствие поддержки этого тэга - головная боль, прежде всего, компании Symantec, производящей это чудо программирования Netscape. Я также считаю, что хоть странички и должны нормально читаться под NN, но все же Internet Explorer для дизайнера первичен, и когда дизайн страницы требует применение тэга IFRAME - его надо использовать, хотя и с оглядкой на пользователей NN. Для нелюбителей продукции компании Майкрософт мне хотелось бы пожелать внимательно прочитать "справку > о программе" к iE, где русским (хотя, у кого как :) языком написано кто его все-таки делал (Майкрософт упоминается там разве что в качестве издателя и праводержателя), или же обзавестись браузером типа Neoplanet. Работает просто потрясающе.

 

P.S.: Посмотреть, как работает IFRAME (в том числе и с различными типами браузеров) можно по адресу http://heroes.newmail.ru

deniska rules! http://myportfolio.newmail.ru
mailto:deniska_rules@mail.ru

 

Hosted by uCoz