Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅在转到其他网站时导航停止_Javascript_Jquery_Wordpress_Html - Fatal编程技术网

Javascript 仅在转到其他网站时导航停止

Javascript 仅在转到其他网站时导航停止,javascript,jquery,wordpress,html,Javascript,Jquery,Wordpress,Html,我正在使用以下代码触发“您确定要离开网站吗”警报,但由于某些原因,它无法识别我的if-else条件,并且仅当我仅在window.onbeforeunload=function(){return true}中放入return true时才起作用。是否只有当用户离开我的网站时,我才可以触发此警报?因为此时没有if-else条件,它会询问用户是否也尝试在同一网站中导航 window.onbeforeunload = function() { var location = window.documen

我正在使用以下代码触发“您确定要离开网站吗”警报,但由于某些原因,它无法识别我的if-else条件,并且仅当我仅在
window.onbeforeunload=function(){return true}
中放入
return true
时才起作用。是否只有当用户离开我的网站时,我才可以触发此警报?因为此时没有if-else条件,它会询问用户是否也尝试在同一网站中导航

window.onbeforeunload = function() {
 var location = window.document.activeElement.href;
if (typeof location != 'undefined')
{
 console.log(location);
} else { reutn true; }

};

您可以根据单击的链接的
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;
    });
  });
};
例如,此页面上的主机名是
“stackoverflow.com”

您可以为要查看提示消息的链接动态添加“window.onbeforeunload”

并删除不需要提示的链接的“window.onbeforeuload”

<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>


功能a(显示提示){ window.onbeforeunload=showPrompt?函数(e){返回“”;}:null; }

您不能阻止用户继续他们想去的地方,您所能做的就是询问他们是否愿意。提供糟糕的用户体验肯定会让他们不想留下来back@charlietfl我不想阻止他们。基本上,我想做的就是当他们在我的网站上导航时,离开网站警报不应该出现,但当他们离开网站时,只有在这种情况下,无论他们想留下还是离开,警报才会出现。那么有没有办法做到这一点,或者根本不可能做到?谢谢,但如果用户从书签栏打开url或在浏览器url字段中手动输入url,此解决方案将不起作用。我测试了它,但它不起作用。当我尝试使用if-else使用上面的代码执行此操作时,我在控制台中遇到了这个问题:多年来,整个事件一直被滥用,并且变得比以前更具限制性