问题标签 [popstate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
782 浏览

jquery - window.onpopstate 只影响一页范围

我有一个从数据库加载动态内容的函数,当单击某些链接时调用它:

jQuery

我想启用pushStateonpopstate

我可以通过取消注释以上行来启用 URL 和浏览器历史记录更改history.pushState- 在多个页面之间向前和向后导航可以正常工作。

但这不会加载内容。

不久前,我认为通过添加这些元素,我拥有了完整的功能(即导航和内容加载):

因此,我尝试将它们添加到单独的块中:

但这会导致导航时的页面范围被限制为一个,并且我无法向前导航。

如何以上述代码为基础实现导航和内容加载?

编辑

作为参考,正确的路径在浏览器历史记录中,只是它们无法导航(FF 和 Chrome)并且相应的内容没有加载。Firebug 中没有错误。

0 投票
2 回答
89 浏览

javascript - pushState 导航离开页面并返回

我正在尝试 popstate 和 pushState,我想知道如何处理页面外导航。

假设我有一个索引页面,它在单击某些内容时会生成一个“新页面”,并且它是用 ajax 加载的。使用 popstate 我更改了 url。在加载的页面中是超出当前“索引”页面的链接。当有人回击时,他们会得到一个倾倒的状态对象。

如何防止它实际加载在 pushState 期间给出的 url?

提前致谢。

0 投票
2 回答
496 浏览

jquery - Modernizr 不适用于 IE9 及更低版本

当我单击站点中的链接时,它可以在主要浏览器中运行,但 IE9 及更低版本无法运行。我点击链接,没有任何反应!控制台说:“event.returnValue 已弃用。请改用标准 event.preventDefault()。”

我正在使用这个网站上的这个方法:http: //sudojesse.github.io/dynamic-page/index.html

当我在 IE9 中使用这个网站并降低它时它可以工作(刷新页面,但它可以工作!)。我究竟做错了什么?

编辑:将所有内容放在子文件夹中时,它可以工作!可能是htacess的东西吗?

0 投票
2 回答
1308 浏览

javascript - 最大调用堆栈大小超过 popstate

我尝试使用popstate函数,但出现错误: Uncaught RangeError: Maximum call stack size exceeded

一步一步

第 1 步:我点击了一个li. addToHistory() 效果很好。

第2步:我点击backtohome按钮。addToHistory() 效果很好

第 3 步:我点击前进按钮,我绑定window.popstate并在该行window.location我有一个无限循环。而且我没有看到下一页。

我的功能有什么问题?

0 投票
1 回答
1328 浏览

javascript - 找不到创建多个历史条目的 popstate 循环的位置

我正在尝试创建一个网页,在单击导航链接时替换主 div 的内容。我已经能够实现 pushstate 函数来替换 div 内容并很容易地更改 url 地址。当使用 popstate 功能单击后退/前进按钮时,我还可以刷新内容。但是,现在我单击第一个链接,它工作正常,我单击下一个链接,它似乎应用了 2 个推送状态,第 3 次单击,应用了 3 个推送状态等。似乎某处发生了一个推送循环,但不确定它在哪里是。我正在寻找一些关于如何消除多个 pushstates 发生的建议,这样它们就不会在我的历史记录中重复。

HTML 代码:

Javascript

0 投票
0 回答
933 浏览

internet-explorer - IE / Firefox - $(window).on('popstate', function() {}

我对 HTML5 History/history.js 有疑问

我使用History.pushState替换地址栏中的链接。代码:

这适用于所有浏览器。我重新加载了站点,我使用$(window).on('popstate', function() {}检查历史记录中是否存在 pushState。代码:

这在 Safari(Mac/Win 和 iOS)中完美运行,但在 Firefox 和 IE 中它不起作用。有人有想法吗?

感谢和抱歉我的英语不好。来自奥地利的问候

0 投票
1 回答
452 浏览

jquery - oppopstate 不会在 firefox 和 ie11 中触发

我四处寻找塞巴斯蒂安·苏林基(Sebastian Sulinki)制作的例子

这里的演示 - http://html5-history-pushstate.ssdtutorials.com/ 很完美,但似乎window.onpopstate = function(){

不适用于 Firefox 和内部资源管理器 11 和 10 中的文档就绪或窗口加载它确实会在其他浏览器上触发。

我无法在我的服务器上演示,因为它在非域脚本上不起作用(演示)仅在 domain.com/ 上不起作用 server.com/folder/ 很抱歉,我没有任何免费域。

但是,如果有人想进一步研究它,只需下载它并在 localhost/ (不是较低的文件夹,而是主目录)或某个域上尝试

然后检查它的简单方法是添加console.log("this url is " + url);到这个脚本片段

当您在 chrome 上打开网站时,它会在开始时显示 url,但在 FF 和 IE 上,它不会显示任何内容,直到您按下#navigation a按钮然后脚本触发。

感谢您花时间和任何答案,提示,信息:)

编辑: 我发现这里(链接下)不会触发 - 但为什么呢?任何解决方案? http://blog.teamtreehouse.com/getting-started-with-the-history-api

0 投票
1 回答
639 浏览

google-chrome - Google Chrome - 在 v34 中是否更改了初始页面加载时的 popstate 触发?

在 Chrome (Mac) 版本 34 中,页面加载时弹出状态行为是否发生了变化?一个正在运行的站点,现在不再运行。初步分析表明 popstate 事件现在没有在页面加载时触发 - 这是正确的吗?

0 投票
0 回答
590 浏览

javascript - 新窗口中的 window.print 破坏了 windows chrome 中的 hashchange

这可能是 Chrome 的一个特定问题,我应该将其带到他们的论坛,但我想看看是否有替代解决方案或修复。我们将backbone.js 用于我们的单页应用程序并打印,我们创建一个新窗口,将我们的html 写入其中,然后在新窗口上调用print。如果用户在没有关闭打印对话框的情况下关闭选项卡,则在 Backbone.History 对象中不再触发 hashchange 和 popstate 事件。您也无法刷新页面。我们必须关闭页面并在新选项卡中重新打开才能重新启动。这个错误不会发生在 linux 版本上,只会发生在 windows 上。如果用户先关闭打印对话框然后关闭选项卡,则一切正常。

理想的解决方案是让 hashchanges 继续工作。如果这不可能,是否有另一种解决方案来打印 HTML 的某个部分?

我尝试编写一个在新窗口中调用 window.print() 的脚本,但它不会触发甚至抛出错误。IFrame 将不起作用,因为单页应用程序的 css 将覆盖打印部分 html。欢迎任何解决方案。

这是一个向您展示问题的jsfiddle。

http://jsfiddle.net/5P4qv/3/

您可能需要允许弹出窗口才能正常工作。单击打印按钮,弹出窗口将打开打印对话框。关闭窗口而不关闭打印对话框,原始窗口将像仍在加载一样。您也将无法刷新。同样,这仅适用于 Windows 中的 Chrome。

0 投票
2 回答
485 浏览

javascript - javascript中强制从不同页面返回popstate的最佳方法是什么

我相信其他人以前也遇到过这个问题,但这让我很头疼。

我有一个生成产品列表的页面。这是一个很长的列表,因此可能会超过几页。我有 Back 和 Next 按钮来实现这一点,如果用户留在列表中,它们就会起作用。

当用户从列表中选择产品并导航到新页面以显示有关产品的更多详细信息时,就会出现此问题。当用户完成此页面并退出时,产品列表将重新显示在用户离开它的位置。

在 chrome 中,popstate 被触发,我必须调整下一个 popstate 所需的返回次数(由于我已经执行了 pushStates),以便让后退按钮转到正确的上一页。在 Firefox 中,页面正在从缓存中恢复,我没有机会拦截返回并进行必要的调整。

当从产品详细信息页面中选择后退按钮或退出按钮时,是否有某种方法可以强制 Firefox 清除缓存并触发弹出状态?