#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». Это только для входных данных.