Модераторы: Illuminaty
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как добавлять свои аттрибуты, Элементам (X)HTML? 
:(
    Опции темы
sergejzr
Дата 9.6.2008, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Проблема такая у меня:
На сайте несколько ссылок, но не все ссылки - просто ссылки. Некоторые особенные. При нажатии на эти ссылки выполняется скрипт и этот скрипт должен определять тип ссылки и в зависимости от этого выполнять то или другое действие.
пример(чего хочется):
<a href="1.html" command="go" onclick="executeCommand(this)">Перейти на 1</a>
<a href="2.html" command="run" onclick="executeCommand(this)">Перейти на 2</a>
<a href="3.html" command="swim" onclick="executeCommand(this)">Перейти на 3</a>

Handler "onclick" присваивается всем ссылкам автоматически скриптом, а юзер уже с помощью "command" контролирует ситуацию.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
SelenIT
Дата 10.6.2008, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 97
Всего: 401



Браузеры поймут, если прямо так и написать - незнакомые атрибуты никак не повлияют на отображение, но будут доступны скрипту через getAttribute. Валидной, правда, такая верстка не будет, но на практике это никакого значения не имеет. Можно, конечно, написать свой DTD (наподобие того, как здесь к DTD XHTML1.1 добавили атрибут target), но это имеет смысл лишь в одном случае - если XHTML-страницу для какой-либо цели предполагается парсить сторонним валидирующим парсером. Для браузеров так изголяться не нужно, им валидность по DTD побоку...

Альтернативный вариант - передавать нужные параметры через существующие атрибуты, напр. rel и class (как делают микроформаты).


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
sergejzr
Дата 10.6.2008, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Цитата(SelenIT @  10.6.2008,  15:07 Найти цитируемый пост)
Альтернативный вариант - передавать нужные параметры через существующие атрибуты, напр. rel и class (как делают микроформаты). 

Можно поподробнее?


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
POLTER
Дата 10.6.2008, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 25.8.2006
Где: Ростов-на-Дону

Репутация: нет
Всего: 2



Цитата

Можно поподробнее?

Используешь вместо атрибута "command" атрибут "rel".
Т.е. что-то типа <a href="#" rel="go" onclick="executeCommand()">Перейти на 1</a>
А в яваскрипте уже получаешь команду через getAttribute:
Код

<script>
function executeCommand()
{
    var a = document.getElementsByTagName('a')[0];
    alert(a.getAttribute('rel'));
}
</script>


Добавлено через 56 секунд
Таким образом, сохраняется валидность страницы и при этом можно хранить нужную информацию в этом атрибуте.
--------------------
Существует 10 типов людей: те, которые понимают твоичный код и те, которые его не понимают.
PM MAIL ICQ   Вверх
SelenIT
Дата 10.6.2008, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 97
Всего: 401



Например, наподобие такого:
<a href="1.html" class="toolbar command_go" onclick="executeCommand(this)">Перейти на 1</a>
<a href="2.html" class="toolbar command_run" onclick="executeCommand(this)">Перейти на 2</a>
<a href="3.html" class="toolbar command_swim active" onclick="executeCommand(this)">Перейти на 3</a>

и в скрипте
Код

function executeCommand(obj) {
   var command = obj.className.match(/\bcommand_(\w+)\b/);
   if (!command) return true; // просто ссылка
   else { // работаем с командой, она в command[1]
      ...


Преимущество атрибута class в этом смысле - что там абсолютно легально может быть несколько практически чего угодно). Не знаю, правда, скажется ли такое нецелевое использование классов на скорости рендеринга страницы...

А про микроформаты неплохо написано здесь (хоть статья и старая)...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Вёрстка веб-сайтов | Следующая тема »


 




[ Время генерации скрипта: 0.0835 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.