2016-04-26 2 views
0

Я уже прошли через этот вопросpreventDefault(), как функциональность в JavaScript

event.preventDefault() vs. return false

Но не нашел свое решение. На самом деле я использую функцию яваскрипта вернуться на предыдущую страницу, которая работает отлично на щелчке

<a href="#" onclick="goBack()"><img src="images/backbtn.png"></a> 

функции

function goBack(){ 
    window.history.back(); 
} 

Когда я нажимаю на <a> включает в URL #, которые я хочу не допустить. В jquery мы используем preventDefault(), чтобы остановить событие по умолчанию для элемента, но есть ли какая-либо аналогичная функция в javascript, чтобы остановить его.

Я знаю, что могу использовать javascript:void(0) в href, который решит проблему, но может быть много других экземпляров, поэтому я хочу узнать о функции в javascript.

Я попытался с помощью return false;, но я пишу это на вершине, как этот

function goBack(){ 
    return false; 
    window.history.back(); 
} 

Затем он останавливает функцию, чтобы выполнить, и если я пишу, как этот

function goBack(){ 
    window.history.back(); 
    return false; 
} 

Тогда нет эффекта от этого return false; , Я уверен, что есть некоторые в javascript, поскольку jquery генерируется из javascript.

Любая помощь будет оценена по достоинству. Заранее спасибо!

+0

почему вы хотите, чтобы остановить 'window.history.back();' на каком случае? – guradio

+0

что вы пытаетесь предотвратить ??? Вы не поняли вопрос. Часть, которую вы поставили на вопрос, в порядке. Но когда вы хотите предотвратить это событие? и когда не к ?? как генерируется событие? –

ответ

2

event.preventDefault() работает как в Javasccript и Jquery

Если получение # является проблемой, и по какой-то причине вы действительно хотите для использования только preventDefault(), тогда вы должны передать event в функцию, а затем в функции event.preventDefault()

<a href="#" onclick="goBack(event)"><img src="images/backbtn.png"></a> 

Затем в вашем Javascript используйте это прошедшее событие и прекратите поведение по умолчанию.

function goBack(event){ 
    event.preventDefault(); 
    window.history.back(); 
} 
+0

'window.history.back()' здесь не обязательно. Gaurav использует его только для удаления «#» из местоположения, но с 'preventDefault',' # 'не будет добавлен. – szym

+0

@szym Я верю, что проблема в том, что он может вернуться на предыдущую страницу, но все же он получает '#' на предыдущей странице url .. –

+1

еще один хороший и хорошо объясненный ответ..thanku –

0

preventDefault существует в JavaScript, но если вы заинтересованы в JQuery, как решение, которое вы должны заботиться о проблемах совместимости. Другого решения, учитывая проблему совместимости со старыми браузерами, является:

function goBack(evt){ 
 
    var e = evt || window.event; 
 
    if (e !== undefined) { 
 
    if (e.preventDefault) { 
 
     e.preventDefault(); 
 
    } else { // IE 
 
     e.returnValue = false; 
 
    } 
 
    } 
 
    window.history.back(); 
 
}
<a href="#" onclick="goBack(event)"><img src="images/backbtn.png"></a>

1

Чтобы добавить к ответам, return false в JQuery делает как event.preventDefault и event.stopPropagation()

С Jquery исходного кода , jquery.event.dispatch

if (ret !== undefined) { 
    if ((event.result = ret) === false) { 
    event.preventDefault(); 
    event.stopPropagation(); 
    } 
} 

Оба preventDefault и stopPropagation доступны в Javascript.

< Для IE 9 event.stopPropagation может быть сделано event.cancelBubble = true и event.preventDefault можно сделать

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