Как отключить все ссылки с помощью javascript в Firefox и Chrome

#javascript #firefox #google-chrome #cross-browser

#javascript #firefox #google-chrome #кросс-браузерный

Вопрос:

Я хочу отключить все ссылки href на моей странице. я использую приведенный ниже код, и он отлично работает только в IE.

 var elems = document.getElementsByTagName("*");
    var len = elems.length;
    for (i=0; i<len; i  ) {
           if(elems[i].tagName.toLowerCase() == 'a'){
               elems[i].disabled = true;           
           }
       }
  

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

Заранее спасибо.

Ответ №1:

Если вы не хотите изменять href ссылок, это тоже можно сделать:

 window.onload = function() {
    var anchors = document.getElementsByTagName("a");
    for (var i = 0; i < anchors.length; i  ) {
        anchors[i].onclick = function() {return false;};
    }
};
  

Рабочая демонстрация здесь: http://jsfiddle.net/jfriend00/9YkJQ /.

Комментарии:

1. return это не функция. Эти круглые скобки не нужны.

2. Я хочу добавить, что возврат (false) не допускается в соответствии со стандартом ECMAScript: ecma-international.org/ecma-262/5.1/#sec-12.9 Это не вопрос личных предпочтений, это неправильно. Однако я не думаю, что у какого-либо браузера есть проблемы с этим обозначением.

3. По крайней мере, вы думаете, что мое понимание неверно. Честно говоря, я не уверен в этом. Но я думаю, что я прав. Конечно, в выражениях всегда разрешены скобки. Поэтому return (true) подходит так же хорошо, как и return ((((true)))) . Но поскольку (true) можно заменить на true, я совершенно уверен, что зарезервированные слова, такие как return и их выражения, должны быть разделены одним или несколькими пробелами. В противном случае returntrue также будет разрешен.

4. Все, что я знаю, это то, что Chrome сказал, что это не будет работать, пока я не изменю ‘return’ на ‘preventDefault’ (я оставил все остальное прежним, и это сработало).

Ответ №2:

Это очень старая тема, но на всякий случай, если кто-то еще зайдет на эту страницу, атрибут disabled можно установить с помощью:

 element.setAttribute('disabled', 'disabled');
  

Это распознается во всех браузерах и отключит ссылку. Однако события запуска по отключенной ссылке обрабатываются по-разному в разных браузерах и версиях. FF и Chrome по-прежнему будут запускать событие onclick, когда IE8 , не в режиме совместимости, не будет запускать события. В этом нет необходимости, если к привязке не подключен обработчик события onclick, обычная ссылка href не будет срабатывать после установки атрибута disabled . Чтобы остановить запуск события click, приведенный выше код будет работать. Скобки не требуются, и лично я не использую их в этом случае, поскольку предполагаю, что скобки предназначены для группировки или для функции. Кажется ненужным в решении, представленном ранее.

Комментарии:

1. Совершенно бесполезно. Ссылки «a href» (это вопрос) не принимают атрибут «disabled». Это только для входных данных.