我正在使用以下代码来触发你确定离开网站的警报但由于某种原因它不能识别我的if else条件并且只有在我return true
window.onbeforeunload = function() { return true }
中才有效。有没有办法只有当用户离开我的网站导致此警报时才会触发此警报,如果没有其他条件请求用户是否尝试在同一网站中导航?
window.onbeforeunload = function() {
var location = window.document.activeElement.href;
if (typeof location != 'undefined')
{
console.log(location);
} else { reutn true; }
};
答案 0 :(得分:0)
您可以设置一个标记,并根据点击的host
标记切换标记
var host = location.hostname,
allowNavigate = false;
window.onbeforeunload = function() {
if (!allowNavigate) {
return 'Message string';// not what actually gets displayed in most browsers these days
}
//don't return anything
return;
};
window.onload = function() {
document.querySelectorAll('a').forEach(function(a) {
a.addEventListener('click', function(e) {
allowNavigate = this.hostname === host;
});
});
};
此页面上的hostname
例如为"stackoverflow.com"
的 DEMO 强>
答案 1 :(得分:0)
您可以添加" window.onbeforeunload"动态显示您想要查看提示消息的链接
并删除" window.onbeforeunload"对于您不想要提示的链接
<a onClick="a(true)" href="https://www.w3schools.com">Click here to get promt before navigate</a>
<br>
<a onClick="a(false)" href="https://jsfiddle.net/">Click here to navigate without promt </a>
<script>
function a(showPrompt){
window.onbeforeunload = showPrompt ? function(e) {return '';}: null;
}
</script>