仅在前往其他网站时导航停止

时间:2017-11-12 14:53:06

标签: javascript jquery html wordpress html5

我正在使用以下代码来触发你确定离开网站的警报但由于某种原因它不能识别我的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; }

};

2 个答案:

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

https://jsfiddle.net/vqsnmamy/1/