【问题标题】:How to launch a popup window when tab closes, or when new address typed in?在选项卡关闭时,如何启动弹出窗口,或者在键入新地址时如何启动弹出窗口?
【发布时间】:2013-05-06 00:03:17
【问题描述】:

我正在尝试从某些页面启动弹出窗口。我希望用户仅在以下情况下看到弹出窗口:

a) 他们关闭浏览器选项卡 b) 他们点击了浏览器的后退按钮 c) 他们转到购买路径中下一步以外的页面 - 基本上,当他们转到不包含字符串“/checkout/”的任何 URL 时。

我查看了加载正文 onUnload 的弹出示例,这有点过于全球化了。我只想在他们尝试离开结帐路径时启动一个弹出窗口 - 一个真正的实际弹出窗口。

我在 StackOverflow 上查看了几个问题,但似乎没有一个能完全回答我的问题。这个答案https://stackoverflow.com/a/3753963/1634459 中提到的 onBeforeUnload 可能会工作......可能......但我不完全确定如何在上面列出的条件下实现它。

...帮助?

这是我想使用的弹出窗口代码:

<script language="javascript" type="text/javascript">
var win=null;
function NewWindow(mypage,myname,w,h,scroll,pos){
if(pos=="center"){LeftPosition=(screen.availWidth)?(screen.availWidth-w)/2:50;TopPosition=(screen.availHeight)?(screen.availHeight-h)/2:50;}
settings='width='+w+',height='+h+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no';
win=window.open(mypage,myname,settings);
if(win.focus){win.focus();}}
function CloseNewWin(){if(win!=null && win.open)win.close()}
window.onfocus=CloseNewWin;
</script>

【问题讨论】:

    标签: javascript popup onbeforeunload


    【解决方案1】:

    给你;我在之前的工作中为营销团队写了这篇文章。你应该能够很容易地适应它;只需根据需要更新 URL 和参数即可。

    当用户离开页面时,此代码将打开一个弹出窗口,除非他们通过提交结帐表单离开。 (如果您在页面上有多个表单,而您不应该在结帐流程中使用,那么您也需要修复它。)

    var nag = function () {
    
        return {
            // assume the user is going to leave, get ready to pounce!
            doWant: true,
    
            // FALCON PUNCH
            deploy: function () {
                if (nag.doWant) {
    
                    var width = 449;
                    var height = 298;
    
                    args = "width=" + width + ",";
                    args += "height=" + height + ",";
                    args += "location=0" + ","
                    args += "menubar=0" + ","
                    args += "resizable=1" + ","
                    args += "scrollbars=0" + ","
                    args += "status=0" + ","
                    args += "titlebar=0" + ","
                    args += "toolbar=0" + ","
                    args += "hotkeys=0"
    
                    var demo_window = window.open("YOUR_URL", "main", args);
    
                    try {
                        demo_window.focus();
                    } catch (err3) { };
                }
            },
    
            // oh, off to step 2? that's cool. carry on.
            ignore: function () {
                nag.doWant = false;
            }
        }
    } ();
    
    window.onunload = nag.deploy;
    document.forms[0].onsubmit = nag.ignore;
    

    如果您希望能够阻止用户离开页面,我可以帮助您进行更新。

    【讨论】:

    • 我们对用户的最终选择将是:继续结帐流程;去查看我们拥有的另一个freeSchwag;或者不,谢谢,去任何其他地方(但不要再弹出一个窗口)。看起来您的示例包含了这一点,所以我需要稍微探索一下。这段代码会放在页面的头部还是正文中?
    • 如果该评论包含 HTML,则无法通过。
    • 您几乎可以将这个脚本放到任何地方,它应该可以工作。也就是说,如果您没有运行 JS MVC 类型的应用程序,脚本应该放在正文的末尾。
    • 能否修改此代码以动态适应其内容的大小? (通常是一张图片。)啊,我忘了告诉你——现在,没有必要阻止他们离开网站。我们只是想把他们带回网站。谢谢!
    • 您的浏览器是否阻止了弹出窗口?当我运行 this fiddle 时,我得到一个被阻止的弹出窗口。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 2018-12-16
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    相关资源
    最近更新 更多