编程语言
首页 > 编程语言> > php – 浏览器关闭时显示弹出窗口

php – 浏览器关闭时显示弹出窗口

作者:互联网

我正在开发一个电子商务(PHP)网站,这是我的要求.

客户离开订单页面或关闭浏览器后,
我想提供另一种带弹出或警告框的产品.
如果他们选择“是”,则会重定向到其他产品页面
而不是关闭窗口.

我在body“onunload”事件上尝试使用javascript window.open().
但浏览器一直阻止它.

反正有没有完成这个?

谢谢,
巢穴

解决方法:

首先:这根本不是用户友好的.就像@Dagon说的那样,没有人希望限制离开页面然后显示出售的不同商品的垃圾邮件.话虽如此,我确信你有合理的理由,或者更确切地说是被告知这样做.所以这是我的答案—

使用onunload事件无法做到这一点.一旦该事件被触发,就没有机会重定向或取消卸载,因为它实际上是在卸载事件上.

你最好的机会是参加onbeforeunload活动.这是实际暂停onunload事件的唯一事件,也可以取消onunload执行. onbeforeunload事件有两种不同的结果

>如果在onbeforeunload事件中返回某些内容,则当用户尝试离开时,将出现一个默认对话框,其中包含您的文本.用户可以点击确定或取消.如果他们点击OK,浏览器将继续导航.如果用户点击取消,那么onunload事件就是,你猜对了,取消了.令人惊讶的是,这似乎是在没有锚定的情况下取消onunload事件的唯一方法.
>如果您没有返回任何内容,onbeforeunload事件中的代码将在用户不知情的情况下触发. (此代码必须相对较短,因为onbeforeunload事件不会占用太多时间.

您可能想要尝试的一个想法(我从未尝试过这个)是尝试在onbeforeunload事件的return语句中添加一个超链接.再次,不知道这是否有效.

下面是onbeforeunload和onunload事件的一个非常简单的示例:

<script type="text/javascript"> //may not be neccesary for your code

window.onbeforeunload=before;
window.onunload=after;

function before(evt)
{
   return "This will appear in the dialog box allong with some other default text";
   //If the return statement was not here, other code could be executed silently (with no pop-up)
}

function after(evt)
{
   //This event fires too fast for the application to execute before the browser unloads
}

</script>

我知道您想要创建警报或确认弹出窗口,但这也存在一些问题.典型的程序员无法访问onbeforeunload和onunload事件的源代码,因此没有人能够100%确定他们所做的一切.根据我的测试,我所知道的是,自定义弹出窗口只出现一次并执行其他代码似乎是不可能的.

如果用户正在关闭网页,那么捕获它的唯一方法是在onbeforeunload事件中.没有办法摆脱那个.如果用户使用后退按钮,那么也会在那里触发onb​​eforeunload事件.我知道你的最终目标是什么,但我有一个建议,如果允许的话.尝试锚定页面上的链接或按钮.如果拥有此弹出窗口是绝对必要的,那么唯一可靠的方法是将弹出窗口固定到您网页上的链接/按钮.但是当然这只有在他们试图使用您的链接(这会更加用户友好)导航时才有效,但如果他们尝试使用外部链接(如喜欢的链接或关闭浏览器)导航,那么它会不被执行.

祝你好运. Onbeforeunload和onunload很棘手.

标签:php,javascript,popup,onunload
来源: https://codeday.me/bug/20190703/1369648.html