如何防止后退箭头关闭Opera Mobile 12中的弹出窗口?

时间:2014-03-14 11:56:17

标签: javascript opera-mobile

我的应用程序有一个弹出窗口,我们的Android平板电脑运行Opera Mobile 12(唯一具有代理支持的移动浏览器和最后一个“真正的”Opera浏览器)呈现为全屏窗口。这没关系,但出现的问题是任何错误的后退箭头都会立即关闭他们正在使用的窗口,因为Opera不支持beforeunload事件,当用户意外地点击底部附近时会让用户感到沮丧。屏幕然后点击后退箭头。

如何在Opera Mobile 12中阻止后退箭头关闭窗口而不发出警告?

1 个答案:

答案 0 :(得分:0)

我利用新的历史API解决了这个问题:

// snippet goes in the setup/DOMContentLoaded phase    
if (typeof window.onbeforeunload !== "undefined") {
    // [standard warnings and whatnot here for non-Opera users]
} else {
    // [optionally include checks for history support, if targeting multiple browsers]

    // force Opera forward whenever a history state is popped
    window.addEventListener("popstate", function(e) {
        history.forward();
    });

    // Create a new history state as soon as the popup window loads
    history.pushState(null, "Page Title Here");
}

这可以通过在页面加载后立即在导航历史记录中创建一个新条目,然后在每次从堆栈弹出该状态时强制浏览器前进(即,用户点击后退箭头)。

您可以轻松修改此选项以显示分配给window.onbeforeunload的相同警告,并在用户需要时关闭弹出窗口,而不是完全禁用后退按钮功能。