让jQuery防止回到Android上
Make jQuery prevent going back on android
我写了一个简单的弹出式联系表单脚本:
$(document).ready(function(){
var popupButton = $("#contact-popup-button");
var popupBox = $("#pop-up-contact");
var popupBg = $("#pop-up-close-background");
popupButton.on("click", function(){
popupBox.addClass("slide-out");
popupBg.fadeIn(200);
});
popupBg.on("click", function(){
popupBox.removeClass("slide-out");
popupBg.fadeOut(100);
});
基本上,当单击按钮时,会出现一个div,并且它后面的空间变得模糊。如果你按下出现的div周围的空间,它会消失。现在对于移动设备,我希望还有一个选项,可以在单击后退按钮时使div消失。不幸的是,我根本无法让它在实践中发挥作用。我尝试过这些答案:
- 从 jquery 处理 Android 中的后退按钮
- 控制硬件后退按钮 jquery 移动版
但是两者都似乎在这项任务中失败了,其他人都使用插件,我想避免这种情况。在LG G2 Mini和Sony Xperia Z1上进行测试
一种方法是使用HTML5 History API。
打开弹出窗口时,您可以在打开弹出窗口之前将状态推送到历史记录堆栈: history.pushState({popupOpen: false}, "My title", "index.html");
此方法自动更新页面标题(当前在大多数浏览器实现中被忽略)和 url 的最后一部分,这些部分将显示在浏览器栏中。在大多数情况下,您可以在此处输入文件名。第一个参数是一个对象,其中包含稍后在弹出状态时可以访问的数据。
一旦将状态推送到历史记录堆栈,当按 back 键时,浏览器不会像往常一样返回最后一页,而是弹出堆栈上的最后一个状态。这适用于所有浏览器,如果您只想要移动浏览器的功能,则必须在调用history.pushState
之前进行浏览器检查。
要正确处理后退事件,您需要订阅 popstate-Event。这可以通过以下代码完成:
window.addEventListener("popstate", function(event) {
var data = event.state;
if(data.popupOpen === false) {
popupBg.trigger('click');
}
});
注册一个事件侦听器,该侦听器在用户导航回来后立即触发。在 event.state
变量中,可以再次访问推送状态时传入的数据。
祝你好运!
相关文章:
- android phonegap jquery点击动态列表中的元素
- 使用PhoneGap和jQuery Mobile在android设备上显示动态列表视图
- jQuery+Android.将功能(Touchstart、touchmove)应用于实时加载的内容
- 需要在javascript或jquery中的Android或Iphone移动设备后退按钮点击事件
- Android/Chrome jQuery AJAX请求在到达服务器之前失败,并出现parserror
- Injecting JQuery into Android Webview
- 让jQuery防止回到Android上
- 在 Android WebView 中过滤 DOM 元素,而无需 jQuery
- jQuery Mobile:UI面板内容在Android 4.4.2上第二次消失
- 在phonegap android中上传多个文件时,使用jquery ui显示进度条
- Android提交使用jquery的https登录表单
- Jquery.Load不适用于android浏览器,但适用于同一设备上的Firefox移动浏览器
- 如何改进使用JQuery Mobile的Android WebView的加载时间
- Android-Javascript:如何在webview中执行jquery
- Phonegap+JQuery Mobile:如何从Android菜单按钮弹出
- jQuery Ajax在Android平板电脑浏览器上失败
- Android + jQuery - 第二个向左滑动不会执行
- Android jQuery无法检测弹出对话框何时关闭
- Android - Jquery Mobile -按钮显示通过警报框
- Android:在WebApp Android (JQUERY)中双击对象