问题标签 [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.
javascript - 是否可以在 window.onPopState 中使用 e.preventDefault?
我试图阻止用户返回我的网络应用程序。为此,我尝试捕获window.onpopstate
并添加e.preventDefault
以取消后退按钮效果。
但这似乎没有发生。
难道不能阻止popstate
浏览器的事件吗?还是我做错了什么?
javascript - onpopstate 正在运行但内容未加载
因此,当按下后退按钮时,我遇到了动态创建的下拉列表不保留其值的问题。有人建议我使用 pushState。所以我相信 pushState 会正确触发。这是我的代码:
正如我所提到的,我有一个动态创建的下拉列表。因此,当用户回击时,应选择单击下一步之前下拉列表的选定值。这是下拉列表的图像:
所以我写了这样的popstate函数:
据我了解,当在浏览器上按下后退按钮或调用 history.back javascript 函数时,它应该触发我在 Chrome 中开发人员控制台的事件侦听器中看到的 popstate。
为什么没有弹出警告信息?为什么不将下拉列表的选择更新到以前的状态?如果有人能给我任何提示,那就太好了。
谢谢您的帮助!
javascript - window popstate 仅在 2 次返回单击后触发,并且每两次
好的,大家好,我是 Stack Overflow 的新手(就注册而言),但经常使用它来寻找解决方案。我已经搜索了我的问题,虽然我找到了几篇几乎与我的问题相关的文章和问题,但没有一个真正回答我的确切问题。如果这个问题被问了一百万次,我们深表歉意!
我对 JQuery 比较陌生,但一般对 JavaScript 有一些经验。我对我试图在我的新网站上实施的 history.pushstate 和 history.popstate 方法完全陌生。我没有使用 ajax 加载内容,而是将其加载到 iframe 中,但同样的原则适用,我需要相应地更新页面 URL 并能够在浏览器中返回和转发。
请在你的回答中对我温柔,虽然我相当称职,你会从我的代码中看到我并不过分高级!
好的,我已经成功实现了 pushstate,并且页面加载似乎工作正常(示例在这里... http://beta.casafondaradio.com)但是当我单击浏览器后退按钮时,它没有所需影响。即似乎我必须单击它两次才能触发popstate 功能。我无法弄清楚我做错了什么。
主要功能是通过相关链接上的 onclick 属性触发的。我知道有一种更优雅的方法可以做到这一点,但我只是想让它对我来说简单易读!
我的链接(在 ASP.NET 中)的格式如下:
我在头部的 Javascript 代码是......
我之前正文关闭标记中的 javascript 代码是...
如前所述,我已将示例上传到上面链接的 beta URL,它处于当前状态(即不工作)。任何帮助将不胜感激,显然我做错了什么,但我不知道它是什么。
提前致谢!
解决!
修改我的loadPageData()
功能如下...
function loadPageData(urlToOpen) {
$('#contentFrame').remove();
var ifr = $('<iframe/>', {
id: 'contentFrame',
src: '/' + urlToOpen,
style: 'height:100px;',
load: function () {
resizeiFrame();
}
});
$('#frameContainer').append(ifr);
}
并在其中添加了一个 IDframeContainer
到带有原始iframe
内容的 DIV !
javascript - Popstate 未按预期工作(需要多次点击)
我正在尝试学习 History Web API,但在第一个障碍中已经遇到了问题。
我可以开始history.pushState
工作,但有问题popstate
。页面加载后第一次单击时它工作正常AJAX
,但如果我再次加载同一页面,我需要单击两次返回按钮。如果我再加载一次,我需要点击返回三次,以此类推。
这是我的代码:
pushstate - history.pushState 为什么会出现两次回退问题?
当我运行点击功能时,我喜欢这段代码需要在页面前返回 2 个单位,为什么两次?
javascript - HTML5 History API - 在 pushState 中存储一个 div
有两件事是动态的:导航 div 和内容 div。我的计划不是同时存储两者,而是将整个 body div 存储在pushState
.
存储数据的正确方法是什么?我尝试了以下哪些产品出错Uncaught DataCloneError: Failed to execute 'pushState' on 'History': An object could not be cloned.
:
这就是它处理 popstate 的方式,未经测试:
编辑:添加.html()
到 jQuery 选择器工作:
但是popstates仍然不一致,目前正在进一步研究。我怀疑数据在 div 的嵌套中被恢复到错误的级别,并且 Leaflet 地图将有陈旧的变量,这些变量也应该保存在 pushState 中。
javascript - 如何使 pjax:popstate 像简单的 PJAX 调用一样工作
在 pjax 中使用 popstate 时,我希望再次从服务器加载内容,而不是被浏览器的缓存内容替换。如果正在应用缓存内容,则<script>
缓存内容内部根本不起作用。那么,当我们简单地点击浏览器的后退/前进按钮时,有没有办法强制对服务器进行正常的 PJAX 调用而不是使用缓存的数据?
请帮忙。谢谢。
browser-history - popstate keeps using last state
I got a simple code when users are filtering brands, categories etc.. Everything works as it should.
BUT when you for example want to go back twice, the first popstate returns the last page perfectly. But when you go back again, it still returns the last page, so it loads it again. And not the page before that one.
A piece of my code:
The pushstate
The popstate
What am i doing wrong?
Thanks in advance!
javascript - AJAX 在 abort() onPopstate 后停止工作
如果用户单击前进/后退按钮时出现未完成的 AJAX 调用,我将使用以下代码中止() 。中止调用一切都很好,但之后对该函数的未来调用将不起作用。当我在中止后尝试调用 swapContent() 时,它什么也不做。中止后如何再次调用 AJAX 函数?
全球的
AJAX
onPopstate
javascript - PushState 和 ReplaceState 导致浏览器后退按钮出错
我正在调试一大段 javascript,并且无法弄清楚浏览器后退按钮发生了什么,因为它与 pushState() 和 replaceState() 相关。我有以下原型方法:
我有一个分面搜索,允许我进行多级过滤。上面的工作是因为它允许我过滤不同的查询并使用后退按钮返回到以前的过滤器,但是一旦我回到搜索的初始状态,我就不能使用浏览器的“后退”按钮。例如,如果我去 google.com -> mysite.com -> 然后将我的搜索过滤到“组件”,我可以使用返回按钮回到 mysite.com 的初始状态,但不能使用它来返回 google.com。
我可以通过将 pushState 更改为 replaceState 来部分解决这个问题,但这不允许我使用后退按钮返回过滤器状态。例如,在上述函数中使用 replaceState 时。如果我转到 google.com -> mysite.com -> 过滤“组件”-> 过滤器 ->“组件类型”并点击后退按钮,它会将我带回 mysite.com。我究竟做错了什么?如何使浏览器的后退按钮通过过滤器状态以及以前的网址返回?