IE всегда перезагружает всю страницу при нажатии <a href="#" /> - PullRequest
5 голосов
/ 26 января 2012

У меня странная ошибка с Internet Explorer (в настоящее время версия 8, но та же проблема с 7). При нажатии на ссылку, такую ​​как:

<a href="#">Hello</a> 

страница полностью перезагружена, несмотря ни на что.

Однако такая ссылка:

<a>Hello</a>

будет работать правильно и не будет перезагружать всю страницу.

Существуют ли какие-либо настройки в IE, которые могут вызвать изменение этой функции?

Информация: я уже установил низкие параметры безопасности и отключил все дополнения, а также параметр «Включить сторонние дополнения ».

Любые предложения полезны, спасибо.

РЕДАКТИРОВАТЬ: Вот что я тестирую

<a href="#" id="btnAddStuff" runat="server" onclick="displayAddStuff();" style="cursor:pointer;">
                <asp:Literal ID="litAddStuff" runat="server" Text="Add Stuff"  /></a>

РЕДАКТИРОВАТЬ # 2: я проверил это с несколькими версиями IE. При чистой установке все работает правильно. Однако тестирование на компьютере произвольного пользователя с другими настройками вызывает проблему.

РЕДАКТИРОВАТЬ # 3: Спасибо за ответы о том, как сделать этот код лучше. Хотя я ценю это, мой вопрос, если кто-нибудь знает, есть ли настраиваемые параметры в Internet Explorer, которые могут заставить браузер запускать вышеуказанный код по-другому?

Ответы [ 3 ]

2 голосов
/ 26 января 2012

Пожалуйста, опубликуйте свой код.

Я думаю, что вы ссылаетесь на "JUMP"

Какое значение "href" я должен использовать для ссылок JavaScript, "#" или "javascript: void (0) "?

Каков эффект добавления 'return false' в прослушиватель событий щелчка?

Я думаю, что эти темы будутполезнее.Помечено для удаления ???

2 голосов
/ 26 января 2012

Если вы знаете немного javasript и / или jQuery, вы можете сделать это:

$("a[rel='prevDefault']").on('click', function(event){
    if($(this).attr("href").indexOf("#") > -1){
        event.preventDefault();
    }
});

или

var anchorArray = document.getElementsByTagName("a"), I;
for(I=0;I<anchorArray.length;I++){
   anchorArray[I].click =  function(event){
      if(anchorArray[I].href.indexOf("#") > -1){
          event.preventDefault();
      }
   }
}
0 голосов
/ 26 января 2012

У вас есть элемент base, настроенный в head?Это стандартная причина этого.

Использование JavaScript может помочь вам преодолеть это.Что-то вроде:

<a href="javascript:;" onclick="document.location.hash='#' />Hello</a>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...