2014-01-15 3 views
0

Моя проблема в том, что я использую Ajax для загрузки моих страниц, и поэтому я не хочу, чтобы href менял страницу, когда я нажимаю ссылку, однако если пользователь на моем сайте захотел чтобы скопировать ссылку на эту страницу, я все еще хочу, чтобы она функционировала. Поэтому я не хочу избавляться от href. Какие у меня варианты?Остановить атрибут href от смены страницы

Текущий код:

<html> 
<head> 

</head> 
<body> 
    <a href="bar.html" id='click'>Click to change url to bar.html</a> 
</body> 
<script type="text/javascript"> 
    var stateObj = { foo: "bar" }; 
    function change_my_url() { 
    history.pushState(stateObj, "page 2", "bar.html"); 
    } 
    var link = document.getElementById('click'); 
    link.addEventListener('click', change_my_url, false); 
</script> 
</html> 
+1

Вы официально смутило меня ... вы НЕ хотите, активный URL, чтобы изменить, но вы хотите загрузить новый сайт? –

+2

Вы пытались добавить 'return false;' в функцию 'change_my_url()'? –

+0

@ AlejandroIván Да, @ NicholasHazel Активный URL-адрес для изменения при загрузке содержимого с помощью ajax – user3196380

ответ

0

Вы можете использовать event.preventDefault в функции мыши для <a> тега.

var elems = document.querySelectorAll('.myDisabledLink'); 

for (var i=0; i<elems.length; ++i) { 
    addClickFunc(elems[i], i); 
} 

function addClickFunc(elem, i) { 
    elem.addEventListener('click', function(event) { 
    event.preventDefault(); 
    console.log(elem.href); 
    //do whatever else you need to do. 
    }); 
} 

Live demo (click).

Образец разметки я использовал:

<a href="some/place" class="myDisabledLink">Click me!</a> 
<a href="a/link" class="myDisabledLink">Click me!</a> 
<a href="another/link" class="myDisabledLink">Click me!</a> 
+0

К сожалению, я должен был добавить, что я пробовал оба из них, ни один из них не работает. FF26 – user3196380

+0

@ user3196380 см. Демо в моем ответе - отлично работает. – m59

+0

При использовании того, что вы предоставили вместе с history.PushState history.PushState больше не работает – user3196380

Смежные вопросы