Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: атрибут data в html5

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Flash_PR
Отправлено: 10 Декабря, 2015 - 16:32:34
Post Id



Посетитель


Покинул форум
Сообщений всего: 328
Дата рег-ции: Окт. 2013  
Откуда: Санкт-Петербург


Помог: 6 раз(а)




Многим известно что в html5 можно создавать свои атрибуты data-my-name="value".

Допустим есть кнопка
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <button class="test" data-obj-id="1" value="1">ZZZZZ</button>
  3.  


и js, показывающий алерт со значением нашего атрибута и атрибута value.
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(document).ready(function(){
  3.         $('.test').on('click', function(){             
  4.                 alert($(this).data('obj-id'));
  5.                 alert($(this).val());
  6.         });
  7. });
  8.  


Если в режиме разработчика меняем значение у value, то при нажатии кнопки это значение и покажет алерт, все логично. А вот с data уже такое не проходит, при замене его значения, он показывает значение которое загрузилось при загрузке страницы.
Я не говорю что это плохо, наоборот хорошо, но как реализован данный механизм, насколько сильно он защищает значения пользовательских атрибутов? Что то нагуглить по данному вопросу не удалось ничего.


ЗЫ: Заметил такую штуку, если загрузить страницу с исходными данными, и не нажимая на кнопку, что бы не показывались алерты изменить значение у data, то он покажит измененое значение. А если загрузить, нажать, потом изменить, нажать, покажит старое значение. Т.е. значение меняет до первого показа алерта, вернее до первого нажатия кнопки.

(Отредактировано автором: 10 Декабря, 2015 - 16:52:01)



-----
Умные мысли приходят тогда, когда все глупости уже сделаны...
 
My status
 Top
SAD
Отправлено: 10 Декабря, 2015 - 17:25:58
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




менять data атрибут, который прописан в html нужно через attr('data-obj-id', значение)

data в html и data в jquery немного разные понятия
 
 Top
Flash_PR
Отправлено: 10 Декабря, 2015 - 17:42:06
Post Id



Посетитель


Покинул форум
Сообщений всего: 328
Дата рег-ции: Окт. 2013  
Откуда: Санкт-Петербург


Помог: 6 раз(а)




SAD пишет:
менять data атрибут, который прописан в html нужно через attr('data-obj-id', значение)


Я в курсе как менять. Вопрос то в другом был. Никто не запрещает открыть пользователю в браузере режим разработчика и изменить значение. При этом при таком изменение значения, и получении его через функцию data в jquery, функция вернет старое значение. В общем вот что нарыл, это проясняет ситуацию:
    Один минус (а может и не минус) — это то, что в data() сохранится только изначальное значение (кешируется), и если мы изменим значение атрибута (например, через .attr(‘data-foo-bar’, 456)), то получая .data('fooBar') увидим наше старое значение.

Это значит что если вдруг меняется значение у нашего атрибута, то брать измененое значение лучше через attr('data-obj-id'), функция data() закэширует и вернет старое значение.
SAD пишет:
data в html и data в jquery немного разные понятия

Не знаю что вы имели в виду, но когда я писал вопрос то data в html это атрибут, а data в jquery это функция получения значения по имени атрибута.

(Отредактировано автором: 10 Декабря, 2015 - 17:45:02)



-----
Умные мысли приходят тогда, когда все глупости уже сделаны...
 
My status
 Top
SAD
Отправлено: 10 Декабря, 2015 - 18:26:31
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




Если Вы хотите немного обезопасить себя, то первоначальную и последующую работу с data атрибутом производите с помощью data функции. Таким образом, если изменится атрибут в html, то это никак не скажется на значении атрибута. При этом data функция покажет либо первоначальное значение, либо то, которые вы зададите сами в коде через .data('obj-id', значение). Хотя, если уже немного умнее чел будет, то и это не поможет.

(Отредактировано автором: 10 Декабря, 2015 - 18:31:51)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB