在IE上,我可以使用(非常非标准但可以正常工作)jQuery来实现这一点
if ($.browser.msie)
$(document).keydown(function(e) { if (e.keyCode == 8) window.event.keyCode = 0;});
Run Code Online (Sandbox Code Playgroud)
但有可能以一种适用于Firefox的方式,或以跨浏览器的方式获得奖金吗?
作为记录:
$(document).keydown(function(e) { if (e.keyCode == 8) e.stopPropagation(); });
Run Code Online (Sandbox Code Playgroud)
什么也没做.
$(document).keydown(function(e) { if (e.keyCode == 8) e.preventDefault(); });
Run Code Online (Sandbox Code Playgroud)
解决了问题,但是在页面上呈现退格键不可用,这比原始行为更糟糕.
编辑:我这样做的原因是我不是创建一个简单的网页,而是一个大型的应用程序.因为你在错误的地方按下退格键而失去10分钟的工作是令人难以置信的烦恼.通过防止退格键导航回来,防止错误与烦人用户的比例应该高于1000/1.
编辑2:我不是想阻止历史导航,只是意外事故.
EDIT3:@brentonstrines评论(因为这个问题非常受欢迎而搬到这里):这是一个长期的'修复',但你可以抛弃你的支持Chromium bug来改变webkit中的这种行为
我正在开发一个网页,根据我执行相应动画的下一步或后退动作,使用pushstate时会出现问题.当我收到活动时,如何知道用户是否使用Pushstate API点击了后退或转发历史记录按钮?或者我是否必须自己实施某些内容?
我需要以某种方式检测用户是否已按下浏览器后退按钮并使用jquery重新加载页面并刷新(重新加载内容和CSS).
如何通过jquery检测这样的动作?
因为如果我在浏览器中使用后退按钮,所以现在不会重新加载某些元素.但是,如果我在网站中使用链接,则所有内容都会刷新并正确显示.
重要!
有些人可能误解了我想要的东西.我不想刷新当前页面.我想按下后退按钮后刷新加载的页面.这是我更详细的意思:
有人可以分享经验/代码我们如何检测浏览器后退按钮点击(对于任何类型的浏览器)?
我们需要满足所有不支持HTML5的浏览器
我正在玩window.onpopstate,有一件事让我有点恼火:
浏览器倾向于在页面加载时以不同方式处理popstate事件.Chrome和Safari总是在页面加载时发出popstate事件,但Firefox不会.
我测试了它,是的,在Chrome和Safari 5.1+中,popstate事件在页面加载时触发,但不在Firefox或IE10中触发.
问题是,我只想听popstate用户点击后退或前进按钮的事件(或者历史记录是通过javascript更改的),但是不想在页面加载上做任何事情.
换句话说,我想区分popstate事件与页面加载与其他popstate事件.
这是我到目前为止尝试过的(我使用的是jQuery):
$(function() {
console.log('document ready');
setTimeout(function() {
window.onpopstate = function(event) {
// Do something here
}, 10);
});
Run Code Online (Sandbox Code Playgroud)
基本上我尝试将我的listener函数绑定到popstate足够晚,以便在页面加载时不受限制,只是稍后.
这似乎有效,但是,我不喜欢这个解决方案.我的意思是,我怎么能确定为setTimeout选择的超时足够大,但不是太大(因为我不希望它等待太多).
我希望有一个更智能的解决方案!
我一直在寻找这个问题并找到了它,但他们正在使用类组件和 React router dom v5
我想要的是当用户单击浏览器后退按钮时我会将他们重定向到主页
有没有办法检测当前页面是否来自后退按钮?
我想只在当前页面来自后退按钮时从cookie加载数据.
我正在使用历史API将新URL推送到网页而不重新加载它.我有多个按钮,都有不同的功能.
我的脚本现在几乎没有问题.当我按下按钮时会发生一些事情,当我返回时,脚本会触发事件监听器而不重新加载页面.
但是,当我现在按下前进按钮时,我想继续前进.URL已正确更改为下一个,但事件侦听器仍然会像按下后退按钮一样触发
例:
index1.htmlindex2.htmlindex3.htmlindex2.htmlindex3.html,但内容是index1.html我想这是因为我有一个监听器,它会监听popstate后退按钮和按下前进按钮的情况.如何区分按下哪种按钮?
这是绑定侦听器的部分:
if (window.history && window.history.pushState) {
$(window).unbind('popstate');
$(window).bind('popstate', function (e) {
clearOverlays();
var url = URL
$.ajax ( {
url : url
}).done ( function ( data ) {
console.log(data);
});
});
}
Run Code Online (Sandbox Code Playgroud) 我使用Ionic 3开发了一个PWA(基于Tab).它在Android浏览器中按下硬件后退按钮或浏览器的后退按钮之前工作正常.如果它从主屏幕运行,按回硬件将关闭应用程序.如果应用程序在android中运行chrome(仅在chrome中测试),硬件返回或浏览器后面将重新加载PWA的第一页,而不是之前访问过的页面.如何在Ionic 3 PWA中处理这些事件?
我正在为所有页面使用延迟加载.
到目前为止我尝试了什么:
按照jgw96的评论在这里,我想IonicPage将处理导航本身.但它没有用.
使用platform.registerBackButtonAction,但它不适用于PWA.
根据Webruster在Answers中的建议,在app.component.ts中尝试了代码.但没有变化.
发布代码:
import { Component, ViewChild } from '@angular/core';
import { Nav, Platform, AlertController, Alert, Events, App, IonicApp, MenuController } from 'ionic-angular';
@Component({
templateUrl: 'app.html'
})
export class MyApp {
@ViewChild(Nav) nav: Nav;
rootPage:any = 'TabsPage';
constructor(public platform: Platform,
public alertCtrl: AlertController, public events: Events,
public menu: MenuController,
private _app: App,
private _ionicApp: IonicApp) {
platform.ready().then(() => {
this.configureBkBtnprocess ();
});
}
configureBkBtnprocess() {
if (window.location.protocol !== "file:") {
window.onpopstate …Run Code Online (Sandbox Code Playgroud) 我正在使用Angular Material(5.0.0)为移动设备创建单页Web应用程序.我有一个需要显示对话框的场景.我想允许用户回击关闭对话框,因为这是在移动设备上非常常见的行为(特别是在Android上).
当前发生这种情况时,页面将转到上一页.我需要按钮才能简单地关闭对话框.
关于如何实现这一点的任何想法?
javascript ×7
jquery ×4
html5 ×3
firefox ×2
android ×1
angular ×1
back-button ×1
browser ×1
html ×1
page-refresh ×1
pushstate ×1
reactjs ×1