php中退出的时候弹框显示,php – 浏览器关闭时显示弹出窗口

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

客户离开订单页面或关闭浏览器后,

我想提供另一种带弹出或警告框的产品.

如果他们选择“是”,则会重定向到其他产品页面

而不是关闭窗口.

我在body“onunload”事件上尝试使用javascript window.open().

但浏览器一直阻止它.

反正有没有完成这个?

谢谢,

巢穴

解决方法:

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

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

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

>如果在onbeforeunload事件中返回某些内容,则当用户尝试离开时,将出现一个默认对话框,其中包含您的文本.用户可以点击确定或取消.如果他们点击OK,浏览器将继续导航.如果用户点击取消,那么onunload事件就是,你猜对了,取消了.令人惊讶的是,这似乎是在没有锚定的情况下取消onunload事件的唯一方法.

>如果您没有返回任何内容,onbeforeunload事件中的代码将在用户不知情的情况下触发. (此代码必须相对较短,因为onbeforeunload事件不会占用太多时间.

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

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

window.οnbefοreunlοad=before;

window.οnunlοad=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

}

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

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

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

标签:php,javascript,popup,onunload

来源: https://codeday.me/bug/20190703/1369648.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值