Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.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 - Fatal编程技术网

Javascript 离开网站时弹出

Javascript 离开网站时弹出,javascript,jquery,Javascript,Jquery,我被要求在访问者离开网站时弹出一个窗口,询问他们是否真的想离开。此弹出窗口仅在其购物车中有物品时显示 我可以很容易地将弹出窗口限制在购物车有物品时,但是我遇到的问题是,即使单击内部链接也会加载弹出窗口-我怎么能拥有它,这样只有在实际离开网站时才会出现 <script language="JavaScript"> window.onbeforeunload = confirmExit; function confirmExit() { return "some me

我被要求在访问者离开网站时弹出一个窗口,询问他们是否真的想离开。此弹出窗口仅在其购物车中有物品时显示

我可以很容易地将弹出窗口限制在购物车有物品时,但是我遇到的问题是,即使单击内部链接也会加载弹出窗口-我怎么能拥有它,这样只有在实际离开网站时才会出现

<script language="JavaScript">
  window.onbeforeunload = confirmExit;
  function confirmExit()
  {
    return "some message about leaving";
  }
</script>

window.onbeforeunload=确认退出;
函数confirmExit()
{
返回“关于离开的消息”;
}

您可以获取已单击链接项目的URL,并检查其是否位于同一域中。将其放入if not语句中,其中包含当前代码。

您可以获取单击链接项目的URL,并检查它是否位于同一域中。将其放入if-not语句中,并将当前代码放入其中。

好的,首先:不要这样做。请这对用户来说非常烦人。只需确保购物车项目存储在服务器或cookie中,这样用户就可以随时返回站点

<script language="JavaScript">
  window.onbeforeunload = confirmExit;
  function confirmExit()
  {
    return "some message about leaving";
  }
</script>
看看这个相关的问题:这不容易做到

不要在卸载之前使用
onbeforeunload
,而是将单击处理程序附加到站点上显示弹出窗口的外部链接,或者将单击处理程序附加到检查链接是否为外部链接的所有链接


同样,不要这样做…

好的,首先:不要这样做。请这对用户来说非常烦人。只需确保购物车项目存储在服务器或cookie中,这样用户就可以随时返回站点

<script language="JavaScript">
  window.onbeforeunload = confirmExit;
  function confirmExit()
  {
    return "some message about leaving";
  }
</script>
看看这个相关的问题:这不容易做到

不要在卸载之前使用
onbeforeunload
,而是将单击处理程序附加到站点上显示弹出窗口的外部链接,或者将单击处理程序附加到检查链接是否为外部链接的所有链接


同样,不要这样做…

单向,我也不建议这样做-用户应该能够在没有收到警告的情况下离开您的站点-但是如果单击了链接,您可以注销事件:

$('a').click(function() {
    window.onbeforeunload = null;
    return true; // continue
});

一种方法是,我也不建议这样做-用户应该能够在没有收到警告的情况下离开您的站点-但是如果单击了链接,您可以注销事件:

$('a').click(function() {
    window.onbeforeunload = null;
    return true; // continue
});

如果单击链接,它将在
e.target.activeElement
中告诉您。您可以检查它是否是此处的链接:

window.onbeforeunload = confirmExit;
function confirmExit(e)
{
    var $element = $(e.target.activeElement);
    if ($element.prop("tagName") !== "A") {
        return "some message about leaving";
    }
}

注意:您可以添加附加条件检查
$element.attr(“href”)
,以确保它显示非您站点链接的消息。

如果单击链接,它将在
e.target.activeElement
中告诉您。您可以检查它是否是此处的链接:

window.onbeforeunload = confirmExit;
function confirmExit(e)
{
    var $element = $(e.target.activeElement);
    if ($element.prop("tagName") !== "A") {
        return "some message about leaving";
    }
}

注意:您可以添加额外的条件检查
$element.attr(“href”)
,以确保它显示非您站点链接的消息。

您必须控制它以启用和禁用该行为,如下所示:

<script>
  var beforeunload = function (event) {
    var message = 'some message about leaving';

    (event || window.event).returnValue = message; // Gecko + IE
    return message;                                // Webkit, Safari, Chrome...
  };

  document.addEventListener('click', function(event) {
    if (event.target.tagName === 'A') {
      window.removeEventListener('beforeunload', beforeunload);
    }
  });

  window.addEventListener('beforeunload', beforeunload);
</script>

var beforeunload=函数(事件){
var message='关于离开的一些消息';
(event | | window.event).returnValue=message;//Gecko+IE
返回消息;//Webkit、Safari、Chrome。。。
};
document.addEventListener('click',函数(事件){
如果(event.target.tagName=='A'){
removeEventListener('beforeunload',beforeunload');
}
});
window.addEventListener('beforeunload',beforeunload);

每当在页面上单击链接时,这将删除
beforeunload
事件。

您必须控制它以启用和禁用该行为,如下所示:

<script>
  var beforeunload = function (event) {
    var message = 'some message about leaving';

    (event || window.event).returnValue = message; // Gecko + IE
    return message;                                // Webkit, Safari, Chrome...
  };

  document.addEventListener('click', function(event) {
    if (event.target.tagName === 'A') {
      window.removeEventListener('beforeunload', beforeunload);
    }
  });

  window.addEventListener('beforeunload', beforeunload);
</script>

var beforeunload=函数(事件){
var message='关于离开的一些消息';
(event | | window.event).returnValue=message;//Gecko+IE
返回消息;//Webkit、Safari、Chrome。。。
};
document.addEventListener('click',函数(事件){
如果(event.target.tagName=='A'){
removeEventListener('beforeunload',beforeunload');
}
});
window.addEventListener('beforeunload',beforeunload);

当页面上的链接被点击时,这将删除<代码>预卸载事件。

我会告诉你的老板,没有更好的方法来对抗你的用户,而不是在他们试图离开页面时给他们展示一个弹出窗口。你怎么知道他们什么时候离开网站?唯一的选择是为每个链接附加一个单击处理程序,如果是指向同一域的链接,则在卸载前分离
onbeforeunload
。更好的解决办法是让你的购物车顺畅运行,当用户的会话超时时,可能会向他们发送一封提醒电子邮件“嘿,你的购物车中还有物品”。当你尝试离开网站时,会出现一个弹出窗口,上面写着“你真的想离开吗?”并决定不离开?可能重复:@bhspencer我已经尝试过了,不去。我会告诉你的老板,没有更好的方法来对抗你的用户,而不是在他们离开页面时给他们展示一个弹出窗口。你怎么知道他们什么时候离开网站?唯一的选择是为每个链接附加一个单击处理程序,如果是指向同一域的链接,则在卸载前分离
onbeforeunload
。更好的解决办法是让你的购物车顺畅运行,当用户的会话超时时,可能会向他们发送一封提醒电子邮件“嘿,你的购物车中还有物品”。当你尝试离开网站时,会出现一个弹出窗口,上面写着“你真的想离开吗?”并决定不离开?可能重复:@bhspencer我已经尝试过了,不行。另外,我同意所有人说你不应该这样做的观点,但我知道有时候开发人员没有最后决定权,或者客户需要特定的功能。如果可以的话,试着说服他们,只有当用户将丢失他们输入的信息时,才应该使用
onbeforeuload
事件。此外,我同意所有人的说法,你不应该这样做