2016-06-28 4 views
0

У меня есть кнопка «Загрузить», и я вызываю событие onclick на этой кнопке, которое обновит страницу с помощью window.location.reload(). Но я хочу, чтобы перезагрузка была вызвана только при нажатии кнопки в первый раз. Начиная со второго клика и до того, как активна HTML-страница, перезагрузка не должна вызываться.Перезагрузка страницы только один раз при нажатии кнопки

Как это можно достичь с помощью javascript? Любые примеры были бы полезны.

+2

Использование 'local/sessionStorage' – Rayon

+0

Использование файлов cookie возможно? – Neal

ответ

-2

вам нужно добавить отключенный атрибут в тег кнопки в событии клика.

Reloading the page only once on a button click

если вы используете JQuery, что-то вроде этого.

$('button').on('click',function()({ 
 
... your code here 
 
$(this).attr('disabled'); 
 
});

+0

Это можно сделать без отключения кнопки. –

+0

Я читал OP, поскольку он хотел, чтобы люди не дважды щелкали по кнопке, пока перезагружалось. Так что его можно изменить. Или удалите его из DOM. –

+1

Он явно упомянул, что «со второго клика и до того, как будет отображаться HTML-страница, перезагрузка не должна называться» - поэтому кнопка все равно может быть нажата, но ничего не должно произойти. –

0

Вы можете попробовать отправить параметр при первой перезагрузке и с помощью этого параметра изменить действие кнопки.

Что-то вроде:

<script> 
function getQueryVariable(variable) { 
    var query = window.location.search.substring(1); 
    var vars = query.split("&"); 
    for (var i=0;i<vars.length;i++) { 
    var pair = vars[i].split("="); 
    if (pair[0] == variable) { 
     return pair[1]; 
    } 
    } 
    return false; 
} 
var secondReload= getQueryVariable("secondReload"); 
if(!secondReload){ 
//if button clicked 
window.location.reload(); 
}else{ 
//deactivate button 
} 
</script> 
1

Вы можете использовать local storage или session storage, чтобы сделать это. Это современный подход, который использует Web Storage API.

В этом случае вы можете установить свойство в хранилище, чтобы удерживать нажатие кнопки, и обновлять только, если он еще не нажат.

можно сделать как в следующем фрагменте кода:

$('button').on('click', function() { 
    // will return null at the first call 
    var buttonClicked = sessionStorage.getItem('isButtonClicked'); 

    // will only enter if the value is null (what is the case in the first call) 
    if (!buttonClicked) { 
     // set value to prevent further reloads 
     sessionStorage.setItem('isButtonClicked', true); 

     // reload the page 
     window.location.reload(); 
    } 
}); 

Более подробный пример на API веб-хранилища можно найти here, если вы хотите узнать более подробную информацию о нем.

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