相关疑难解决方法(0)

如何防止退格键导航回来?

在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中的这种行为

javascript firefox jquery internet-explorer cross-browser

268
推荐指数
10
解决办法
20万
查看次数

如果popstate事件来自HTML5 pushstate的后退或前进操作,如何检索?

我正在开发一个网页,根据我执行相应动画的下一步或后退动作,使用pushstate时会出现问题.当我收到活动时,如何知道用户是否使用Pushstate API点击了后退或转发历史记录按钮?或者我是否必须自己实施某些内容?

javascript html5 browser-history pushstate

57
推荐指数
2
解决办法
3万
查看次数

如何在使用浏览器后退按钮时强制重新加载页面?

我需要以某种方式检测用户是否已按下浏览器后退按钮并使用jquery重新加载页面并刷新(重新加载内容和CSS).

如何通过jquery检测这样的动作?

因为如果我在浏览器中使用后退按钮,所以现在不会重新加载某些元素.但是,如果我在网站中使用链接,则所有内容都会刷新并正确显示.

重要!

有些人可能误解了我想要的东西.我不想刷新当前页面.我想按下后退按钮后刷新加载的页面.这是我更详细的意思:

  1. 用户正在访问page1.
  2. 而在第1页 - 他点击了第2页的链接.
  3. 他被重定向到page2
  4. 现在(重要的一部分!)他点击浏览器中的后退按钮,因为他想回到page1
  5. 他回到了第1页 - 现在正在重新加载page1并且会收到类似"你回来了!"的警告.

javascript browser jquery browser-cache page-refresh

53
推荐指数
8
解决办法
7万
查看次数

JavaScript或jQuery浏览器后退按钮点击检测器

有人可以分享经验/代码我们如何检测浏览器后退按钮点击(对于任何类型的浏览器)?

我们需要满足所有不支持HTML5的浏览器

javascript jquery back-button

42
推荐指数
6
解决办法
17万
查看次数

window.onpopstate页面加载

我正在玩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选择的超时足够大,但不是太大(因为我不希望它等待太多).

我希望有一个更智能的解决方案!

javascript jquery html5

36
推荐指数
3
解决办法
6万
查看次数

如何使用react router dom v6控制浏览器后退按钮?

我一直在寻找这个问题并找到了它,但他们正在使用类组件和 React router dom v5

我想要的是当用户单击浏览器后退按钮时我会将他们重定向到主页

reactjs react-router-dom

20
推荐指数
2
解决办法
4万
查看次数

检测页面是否从后退按钮加载

有没有办法检测当前页面是否来自后退按钮?

我想只在当前页面来自后退按钮时从cookie加载数据.

javascript firefox internet-explorer

16
推荐指数
5
解决办法
1万
查看次数

区分按下的后退按钮和使用History API按下的前进按钮

我正在使用历史API将新URL推送到网页而不重新加载它.我有多个按钮,都有不同的功能.

我的脚本现在几乎没有问题.当我按下按钮时会发生一些事情,当我返回时,脚本会触发事件监听器而不重新加载页面.

但是,当我现在按下前进按钮时,我想继续前进.URL已正确更改为下一个,但事件侦听器仍然会像按下后退按钮一样触发

例:

  1. index1.html
  2. 按钮→ index2.html
  3. 按钮→ index3.html
  4. 按下后退按钮→ index2.html
  5. 按下前进按钮→现在是URL index3.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)

html javascript html5 browser-history html5-history

15
推荐指数
1
解决办法
2699
查看次数

如何处理使用Ionic3开发的PWA中的硬件后退按钮

我使用Ionic 3开发了一个PWA(基于Tab).它在Android浏览器中按下硬件后退按钮或浏览器的后退按钮之前工作正常.如果它从主屏幕运行,按回硬件将关闭应用程序.如果应用程序在android中运行chrome(仅在chrome中测试),硬件返回或浏览器后面将重新加载PWA的第一页,而不是之前访问过的页面.如何在Ionic 3 PWA中处理这些事件?

我正在为所有页面使用延迟加载.

到目前为止我尝试了什么:

  1. 按照jgw96的评论在这里,我想IonicPage将处理导航本身.但它没有用.

  2. 使用platform.registerBackButtonAction,但它不适用于PWA.

  3. 根据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)

android ionic-framework

13
推荐指数
1
解决办法
2045
查看次数

在浏览器后面关闭Angular Material对话框

我正在使用Angular Material(5.0.0)为移动设备创建单页Web应用程序.我有一个需要显示对话框的场景.我想允许用户回击关闭对话框,因为这是在移动设备上非常常见的行为(特别是在Android上).

当前发生这种情况时,页面将转到上一页.我需要按钮才能简单地关闭对话框.

关于如何实现这一点的任何想法?

angular-material angular

10
推荐指数
4
解决办法
3923
查看次数