Старомодный html onclick return false не работает в inIE, когда включен скрипт jQuery - PullRequest
4 голосов
/ 13 марта 2010

Хорошо, так что я довольно новичок в jQuery, но обнаружил эту причудливую проблему только сейчас,

Если мы на секунду проигнорируем jquery и рассмотрим этот сценарий, если у меня есть две ссылки, как показано ниже, и с href, и с событием onclick, и с. Первая ссылка не будет следовать за href, потому что onclick возвращает false, а вторая ссылка будет, потому что onclick возвращает true.

<a href="/page.html" onclick="return false;">Dont follow</a>

<a href="/page.html" onclick="return true;">Follow</a>

Это работает просто в любом браузере, как и должно быть, дело в том, что, как только я включаю скрипт jQuery на страницу, он перестает работать во всех версиях IE, который всегда следует после href, возвращает ли onclick значение false или не. (он продолжает нормально работать в других браузерах)

Теперь, если я добавлю событие, используя jquery, и вызову .preventDefault () на объекте события вместо того, чтобы делать это по старинке, это будет правильно, и вы можете сказать, что хорошо, просто сделайте это тогда? Но у меня есть сайт с тысячами строк кода, и я добавляю поддержку jquery, я не хочу рисковать, что я могу пропустить уже определенный html onclick = "" и сломать сайт.

Не могу понять, почему jQuery должен препятствовать работе совершенно нормальных концепций javascript, поэтому это ошибка jQuery или я что-то упустил?

Ответы [ 3 ]

3 голосов
/ 13 марта 2010

Наиболее вероятная причина заключается в том, что у вас есть синтаксическая ошибка в другом месте страницы, которая препятствует правильной работе JavaScript на странице. Включите уведомления об ошибках в вашем браузере, чтобы убедиться, что он не скрывает от вас ошибки.

2 голосов
/ 27 мая 2012

Попробуйте также:

onClick = "event.returnValue = false; return false;"

0 голосов
/ 13 марта 2010

Я исправил ваш пример кода для второй ссылки и протестировал в IE 8, и он отлично работает. Я готов поспорить, что JohnFx прав, и у вас есть другая ошибка на вашей странице, которая не позволяет ему работать.

Я также тестировал с использованием библиотеки jquery.

Пример:

   <html>
 <head>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
 </head>
 <body>
   <a href="/page.html" onclick="return false;">Dont follow</a>
   <a href="/page.html" onclick="return true;">Follow</a>
 </body>
    </html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...