Ответ 1
ПРОБЛЕМА С ВАШИМ КОДОМ:
функция вызывается, когда вы refresh
, потому что on refresh the page is unloaded and then reloaded
.
в вашем решении, вы также должны заметить, что вы не назначаете function
- window.onbeforeunload
, но вы назначаете return value of the function
при написании
window.onbeforeunload = confirmWinClose();
который также может выполнять функцию (на основе того, где вы размещаете ее в javascript) всякий раз, когда выполняется назначение. Напр.
function confirmWinClose() {
var confirmClose = confirm('Close?');
return confirmClose;
}
window.onbeforeunload = confirmWinClose();
приведенный выше код будет выполнять функцию confirmWinClose
при загрузке этого js.
(не ваш случай, поскольку вы определили функцию после вызова, поэтому не выполняются при загрузке, но вы должны помнить об этом)
РЕШЕНИЕ:
приведенное ниже решение работает для close
также
вместо вашего решения, я попробовал это
JS:
window.onbeforeunload = function() {
var confirmClose = confirm('Close?');
return confirmClose;
}
или
window.onbeforeunload = confirmWinClose; //note the absence of calling parantheses
function confirmWinClose() {
var confirmClose = confirm('Close?');
return confirmClose;
}
это работает как ожидалось.
также обратите внимание, что вы должны return
из onbeforeunload
явно.
даже если вам нужно вызвать функцию, вы должны сделать
<script>
window.onbeforeunload = function(e) {
callSomeFunction();
return null;
};
</script>