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

标签 javascript opera-mobile

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

如何在 Opera Mobile 12 中防止后退箭头在没有警告的情况下关闭窗口?

最佳答案

我通过利用新的 History 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 的相同警告,并在用户需要时关闭弹出窗口,而不是完全禁用关闭后退按钮功能.

关于javascript - 如何防止后退箭头关闭 Opera Mobile 12 中的弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22404322/

相关文章:

javascript - $firebase 在 AngularJS 中未定义

javascript - 如何使用 jsonp 请求获取 json

javascript - 如何在安卓浏览器中制作滚动条

javascript - Opera Mobile 9.7 Beta 设置焦点

javascript - webpack 4 和 d3 es6 导入不起作用

javascript - 在 JavaScript 中,在函数作用域之外访问未声明的变量赋值?

javascript - 将项目围绕其起始位置附近的圆展开的算法

html - 放大时 Div 在 Opera Mobile 中搞砸了

opera - 最近的歌剧版本中的远程调试

css - 如何删除 Opera Mobile 中的缩放图标