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事件中.没有办法摆脱那个.如果用户使用后退按钮,那么也会在那里触发onbeforeunload事件.我知道你的最终目标是什么,但我有一个建议,如果允许的话.尝试锚定页面上的链接或按钮.如果拥有此弹出窗口是绝对必要的,那么唯一可靠的方法是将弹出窗口固定到您网页上的链接/按钮.但是当然这只有在他们试图使用您的链接(这会更加用户友好)导航时才有效,但如果他们尝试使用外部链接(如喜欢的链接或关闭浏览器)导航,那么它会不被执行.
祝你好运. Onbeforeunload和onunload很棘手.
标签:php,javascript,popup,onunload 来源: https://codeday.me/bug/20190703/1369648.html