当前位置: 首页 > 面试题库 >

onpopstate处理程序-Ajax后退按钮

詹斌蔚
2023-03-14
问题内容

我正在使用pushState为网站上的Ajax内容创建有意义的URL。我想在用户单击前进或后退按钮时刷新Ajax内容。但是我遇到了问题,因为Chrome(正确)在“历史记录遍历”(前进/后退按钮)和“结束”(页面加载)上都暗示了onpopstate。我想创建一个区分页面加载和历史遍历的onpopstate处理程序,因为如果已经成功加载Ajax内容,我就不希望刷新它。有人可以帮助我区分两者吗?

window.onpopstate = function (event) {
    // If : Forward/back button pressed
        // Reload any ajax content with new variables
    // Else : Page load complete
        // Do nothing - content already loaded and correct
}

有关chrome和onpopstate的详细信息,请参见http://code.google.com/p/chromium/issues/detail?id=63040。

谢谢


问题答案:

One way would be to initialize a variable to false on page load, and then on
your popstate event, check that variable. If it’s still false, set it to true
and do nothing. From then on all of your other popstate events should be only
from back/forward events.


var loaded = false;

window.onpopstate = function(e) {
    if (!loaded) {
        loaded = true;
        return;
    } else {
        // run your stuff...
    }
}


 类似资料:
  • 本文向大家介绍pushState、replaceState、onpopstate 实现Ajax页面的前进后退刷新,包括了pushState、replaceState、onpopstate 实现Ajax页面的前进后退刷新的使用技巧和注意事项,需要的朋友参考一下 使用Ajax可以异步获取数据,可以更高效地渲染页面。 但也存在这一些问题: 再刷新页面,页面就会变成初始的状态 浏览器的前进后退功能无效 对

  • 在我的应用程序中,我有一个EditText。当我聚焦这个元素时,会出现光标和键盘。当我知道按下后退按钮时,键盘消失,但元素保持聚焦,闪烁的光标仍然可见。 我试图用我在其他帖子上找到的代码来管理它,但它不起作用,我只是不明白这个事件。

  • 问题内容: 如果javascript修改了页面A中的DOM,则用户导航到页面B,然后单击返回按钮返回页面A。页面A对DOM的所有修改都将丢失,并且向用户显示最初从服务器检索到的版本。 它可以在stackoverflow,reddit和许多其他流行的网站上以这种方式工作。(尝试向该问题添加测试评论,然后导航至其他页面并单击“返回”按钮以返回- 您的评论将“消失”) 这很有意义,但是某些网站(appl

  • 问题内容: 我在www.darknovagames.com上运行了基于浏览器的游戏。最近,我一直在努力使用CSS重新格式化该网站,试图让其所有页面都根据HTML标准进行验证。 我一直在想着要在页面左侧放置AJAX导航菜单的想法(而不是每次都将用户带到一个单独的页面,而是需要重新加载标题和导航栏,而这几乎是不会改变的),我知道如果这样做,我可能会破坏浏览器中的“前进/后退”按钮。我的问题是,我应该继

  • 问题内容: 当用户登录时,将存储会话信息。当用户注销时,会话信息将被删除。但是当我点击浏览器的后退按钮时,会显示用户信息。由于会话已消失,但我们无法确定是否执行了用户登录操作。我该如何解决这个问题? 问题答案: 我用这种方法。首先创建一个实现Filter的类并重写doFilter()方法。doFilter()的代码是: 之后在web.xml中使用过滤器。这个过滤器就是这个。

  • 问题内容: 我的Express应用程序中有一个受限制的区域“ / dashboard”。我使用一个非常小的函数来限制访问: 问题是当我通过调用注销用户时… …会话被终止,但是 当我在浏览器中单击“后退”按钮时,我从浏览器的缓存中获取了受限制的页面。 这意味着’/ dashboard’上没有GET,也没有用户登录验证。 我尝试在meta(玉模板)中使用no-cache,但仍然无法正常工作。 任何人?