我的应用程序有一个弹出窗口,我们的 Android 平板电脑运行 Opera Mobile 12(唯一支持代理的移动浏览器和最后一个“真正的”Opera 浏览器)呈现为全屏窗口。没关系,但出现的问题是任何错误的后退箭头点击都会立即关闭他们正在工作的窗口,因为 Opera 不支持该beforeunload
事件,当用户不小心点击屏幕底部附近并击中背部时会感到沮丧箭头代替。
如何在 Opera Mobile 12 中防止后退箭头在没有警告的情况下关闭窗口?
我的应用程序有一个弹出窗口,我们的 Android 平板电脑运行 Opera Mobile 12(唯一支持代理的移动浏览器和最后一个“真正的”Opera 浏览器)呈现为全屏窗口。没关系,但出现的问题是任何错误的后退箭头点击都会立即关闭他们正在工作的窗口,因为 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
如果用户愿意,您可以轻松修改它以显示分配给的相同警告并关闭弹出窗口,而不是完全禁用关闭按钮功能。