ГлавнаяBTL инфоПрограммированиеJavaScript
Статьи

JavaScript
JavaScript - это язык для составления сценариев, позволяющих выполнять разные действия непосредственно на машине пользователя. Распологаются данные сценарии внутри HTML документов...
 

Способы открытия нового окна с помощью JS
перечислены несколько способов открытия нового окна, а также указаны их достоинства и недостатки...
 

Изменение стилей элементов
Динамическое изменение стилей элементов поддерживается почти в одинаковой форме всеми современными браузерами...
 

Работа с таблицами стилей
Доступ к таблицам стилей через коллекцию document.styleSheets и их изменение, поддерживают Internet Explorer, Gecko-браузеры (Mozilla, Firefox и т.д.), а также KHTML-браузеры (Konqueror, Safari), Opera (начиная с версии 9.0)...
 

Атрибуты и свойства: модель DOM и отличия в Internet Explorer
 

Получение данных от сервера без перезагрузки страницы
Различные способы обращения к серверу без перезагрузки страницы принято называть общим термином "Remote Scripting". Здесь будут собраны и описаны преимущества и недостатки нескольких наиболее распространенных подходов...
 

Полезные функции
Работа со строками, Обработка событий, Работа с CSS-классами, Работа с объектами и функциями...
 

Эмуляция selectionStart/selectionEnd в Internet Explorer
Для работы с отмеченной областью текстовых полей в Internet Explorer существует объект selection, предоставляющий широкие возможности. Однако, когда требуется выполнить элементарную операцию, к примеру выделение определённого слова в тексте, вдруг выясняется, что сделать это очень сложно. Хотелось бы, чтобы текстовые поля в Internet Explorer поддерживали свойства selectionStart/selectionEnd и метод setSelectionRange(), реализованные в Gecko-браузерах...
 

Эмуляция отправки формы при помощи XMLHttpRequest
Данный набор функций позволяет отправлять данные на сервер при помощи XMLHttpRequest так, что на сервере они будут восприниматься как данные обычной POST-формы. Поскольку кодирование данных осуществляет функция escapeURIComponent(), всегда используется кодировка UTF-8...
 

Создание графического checkbox-а
Иногда веб-дизайнеры, увлёкшись сочинением ни на что не похожего суперстиля для сайта, сталкиваются с необходимостью вписать в этот свой уникальный стиль стандартные элементы управления HTML-форм. Стандартные элементы, хотя и всем привычны, выглядят довольно коряво, к тому же могут иметь совершенно разный вид на разных платформах. Естественно, в этом случае у дизайнера возникает желание совсем отказаться от стандартных элементов управления и нарисовать свои собственные...
 


1 2 
В начало Предыдущая Следующая В конец
 

Оглавление

Ниже перечислены несколько способов открытия нового окна, а также указаны их достоинства и недостатки.

href=\"javascript:…\"

<a href=\"javascript:window.open(\'popup.html\',\'\',\'…\')\">Новое окно</a>  

Это самый старый (известный мне) способ. Его минусы:

  • при отключении JS ссылка не работает;
  • не индексируется поисковиками;
  • в статусной строке вместо ссылке отображается JavaScript-код;
  • „грязный“ код.

onclick=\"…\"

<a href=\"popup.html\" onclick=\"window.open(\'popup.html\',\'…\',\'…\'); return false\">Новое окно</a>  <a href=\"popup.html\" onclick=\"window.open(this.href,\'…\',\'…\'); return false\">Новое окно</a>  

Именно этот способ чаще всего используется на сайтах. Он лишён первых двух минусов предыдущего способа, и если на сайте открытие новых окон не является частым действием (например, на этом сайте я нашёл только одну такую ссылку), то этот способ является оптимальным.

Если же на сайте приходиться открывать много новых однотипных окон (например увеличенное изображение товаров в интернет-магазине), то этот способ выливается в большое количество лишнего кода. Возможно, в этом случае лучше еще раз продумать как следует интерфейс. Владимир Палант[досье]

сlass=\"popup\", window.onload

Идея проста, обозначим каким-либо образом ссылки, которые нужно открывать в новом окне (в данном случае присвоив им класс), а после загрузки документа присвоим этим ссылкам обработчик события onclick.

<a href=\"popup.html\" class=\"popup\">Новое окно</a>  
function handlePopupClick() {    window.open(this.href,\'…\',\'…\');    return false;  }    window.onload = function() {    var lnks = document.getElementsByTagName(\'A\')    for(var i = 0; i < lnks.length; i++)      if(/\\bpopup\\b/.test(lnks[i].className))        lnks[i].onclick = handlePopupClick;  }  

В данном примере параметры нового окна (размеры, имя окна и т.д.) будут одинаковыми у всех ссылок, но при желании это можно изменить — к примеру, определить стандартные параметры, и отклонения от них указывать атрибутами ссылки. Основной же минус в том, что эти ссылки будут открывать новые окна только после полной загрузки документа, а до этого они будут работать как обычные ссылки. Кроме того, если на странице много ссылок, то на их проверку уйдет некоторое время, что выражается в \"подвисании\" браузера при окончании загрузки страницы.

сlass=\"popup\", document.onclick

Вспомним, что события всплывают, и отловить их можно на самом верхнем уровне. Поэтому будем перехватывать все клики в документе, и если это клик по ссылке с class=\"popup\", то будем открывать новое окно.

<a href=\"popup.html\" class=\"popup\">Новое окно</a>  
document.onclick = function(e) {    e = e || event;    var t = e.target || e.srcElement;    if (t.tagName.toLowerCase() == \'a\' && /\\bpopup\\b/.test(t.className)) {      window.open(t.href,\'…\',\'…\');      return false;    }    return true;  }  

Здесь отсутствуют минусы предыдущего способа. При сложной разметке сайта следует, однако, учитывать, что клик может произойти не на самой ссылке, а на одном из его дочерних элементов (на картинке, к примеру). В этом случае нужно переходить от t к родительским элементам по цепочке, пока не будет найдена ссылка:

document.onclick = function(e) {    e = e || event;    var t = e.target || e.srcElement;    while (t && t.nodeType == 1 && t.tagName.toLowerCase() != \'a\')       t = t.parentNode;      if (t && t.nodeType == 1 && /\\bpopup\\b/.test(t.className)) {      window.open(t.href,\'…\',\'…\');      return false;    }    return true;  }  

Разумеется, в двух последних способах не обязательно определять ссылки, которые должны открывать новые окна, с помощью класса. Вариантов может быть много. Например, если на вашем сайте все попапы открываются по адресу /popup/что-то…, то можно определять проверять наличие этого пути в атрибуте href ссылки.

Услуги
Портфолио
BTL инфо
Администрирование
 
Дизайн
 
Программирование
 
htlm/dhtml
javascript
ajax
aps
flash action script
php
xhtml/wap
database
Поисковая оптимизация и раскрутка
 
Шаблоны
 
Программы
 
Контакты

УКР РУС ENG

  © 2005-2008 дизайн-студия myua.com.ua