пользовательское свойство в HTML-теге не распознается ie9 и firefox - PullRequest
2 голосов
/ 09 января 2012

Я использую прототип 1.7.0.У меня есть HTML-код, подобный указанному ниже тегу.Я добавил собственный метод onhide.

<div id="showButton" onclick="javascript:hello();" onhide="onNamehide()">show</div>

Теперь, когда я нажимаю, $('showButton').onhide возвращает значение true, отображается в IE8 и false в IE9, firefox.

 function hello(){
   if($('showButton').onhide){
     alert("I am able to find onhide function");
   } else {
     alert("Sorry, I am not able to find onhide function");
   }
 }   

Может кто-топожалуйста, объясните мне это?

1 Ответ

3 голосов
/ 09 января 2012

См. Element#hasAttribute

if ($('showButton').hasAttribute('onhide')) {

Причина, по которой тестирование на onhide только иногда работает, сложна и неуловима.Технически, объект, возвращаемый $('showButton'), является представлением DOM в формате javascript, само по себе это не элемент HTML.Старые браузеры путали бы проблему, рассматривая атрибуты HTML как свойства DOM, но установка свойства DOM не всегда устанавливала атрибут HTML.По мере приближения браузеров к спецификации разница становится все более точной.

Попробуйте писать код в спецификации, а не в реализации, используя такие функции, как getAttribute и setAttribute (абстрагировано в Prototype как readAttribute и writeAttribute для кросс-браузерности).

...