问题标签 [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 - 我可以防止 history.popstate 在初始页面加载时触发吗?
我正在开发一个通过 AJAX 提供内容的网站。
如果您单击菜单中的一个项目,内容 div 会随着$.get
响应而更新,没什么特别的。
我正在实施history.pushState
以允许使用浏览器的后退/前进按钮进行导航。
我有以下内容可以在历史导航中加载内容:
问题是,当第一次加载页面时,此函数会$.getScript
立即再次加载页面。第一次加载页面时,它呈现初始 HTML 视图,然后在第二次加载时呈现 JS 视图,因为它是一个 JS 请求。
如何防止此事件在带有 HTML 请求的页面上触发?
jquery - jQuery - 在ajax调用后向DOM添加ticker
我在我的新项目中使用其中一个 jQuery 代码,并且页面是使用 HTML5 History API(pushState 和 popState)加载的。使用 jQuery.getJSON() 加载页面内容后,我会收到警告说“DOM 中不存在元素!” - 我相信它指的是股票代码容器(在 ajax 调用后返回),因为它在内容加载后不起作用。
我试图在 jQuery.getJSON() 的回调函数中再次实例化代码,但这并没有解决问题:
知道什么是解决方案吗?
javascript - 为所有浏览器处理 window.onpopstate 的理想方法是什么?
对于 chrome,该事件会在页面加载时触发,但在 Firefox 中,它只会在您按下后退或前进按钮时才会触发。那么如何编写一个适用于所有浏览器的脚本呢?
jquery - pushState() 和 popState():操纵浏览器的历史
我正在做一个小项目,我想在其中创建一个 Ajax 风格的网站。内容使用 jQuery 加载load()
。正如你们中的一些人所知,这样做的不利方面是 URL 不会根据显示的内容而相应更改。要完成这项工作,您可以使用pushState()
. 因为这不支持跨浏览器,所以我使用了插件history.js
.
这工作得很好,但问题是我的后退和前进按钮没有正常工作,我不知道我做错了什么。URL 正在正确更改,内容也在更改,但标题根本没有更改。标题我的意思是显示为浏览器窗口的窗口(或选项卡)的标题。即<title>
加载的页面或指向该页面的链接的标题属性(它们是相同的)。我认为这与我只调用我需要其标题的页面部分(即通过添加#content
到load()
)这一事实有关。我仍然想要那个页面的标题。这是我到目前为止的测试用例。(自 2013 年 12 月 28 日起不再可用。)jQuery 文件:
我还注意到,当返回到基本页面(即 /sectionLoaderTest/)时,它会暂时变为空白,并且仅在一段时间后才会加载第一页的内容。有没有办法优化这个?
此外,我正在使用 jQuery 向已单击的链接添加一个活动类。我怎样才能确保这会随着历史的变化而改变?以便在用户导航返回时突出显示正确的链接?
所以这三个问题是:
- 前进和后退时使标题正常工作
- 优化首页加载时间
- 前进后退时修正active-class
欢迎大家帮忙!
注意 1:我想在 history.js 和我自己的脚本上构建,因此保持对< HTML5
浏览器的支持。我更喜欢这个,因为 1. 我知道这必须有效,只是出了点问题。2. 如果我能看到一个解决方案并在我已经编写的脚本中实现它,而不是找出一个全新的脚本,这将节省时间。
注意 2:赏金只会提供给能够回答我所有问题 (3) 的人!
jquery - 如何忽略popstate初始加载,使用pjax
我一直在尝试让前进和后退浏览器按钮在使用 pjax 的小型站点上工作,并提出以下代码来处理类更改和淡入淡出各种覆盖。
但是我发现 Chrome 和 Safari 将初始页面加载视为弹出状态,因此这让我很伤心。有没有办法阻止这一切?
jquery - Firefox 中的 jQuery popstate 事件处理
我有这样的东西:
它在 chrome 中就像一个魅力,但在 FF 中不起作用(不触发事件处理程序)。当我将此代码放在就绪块之外时,可以处理事件,但我不喜欢它在就绪块之外。
你知道有什么解决办法吗?干杯。
javascript - pushState & popState:Safari 5 不返回 window.history.state
在 Safari 5 中触发我的 popState 时,我似乎无法访问 window.history.state 对象(页面返回)。此代码在 Chrome 19 和 Firefox 12 中完美运行。
Safari 5 中的 console.log(window.history.state) 返回“未定义”。
html - 具有部分页面加载的 HTML5 History API 后退按钮
为了提高我网站的性能/响应能力,我使用 AJAX、replaceState、pushState 和 popstate 侦听器实现了部分页面加载。
我基本上将页面的中心部分 (HTML) 作为我的状态对象存储在历史记录中。单击链接时,我仅从服务器请求页面的中心位(使用不同的 Accept 标头标识这些请求)并将其替换为 javascript。在 popstate 上,我抓住前一个中心部分并将其推回 dom。
这大部分工作正常,但是我发现了一个我坚持的特定问题。解释起来有点复杂,所以如果不是很清楚,我很抱歉。
我们的大多数页面上都有一个搜索表单。通过 ajax 加载的部分页面仅适用于 GET 请求,并且表单执行 POST 导致整个页面加载。
如果我浏览以下一组页面,我最终会看到一个格式错误的部分页面,该页面仅包含中心内容,没有任何周围的 dom:
从主页开始(通过整页加载)- 执行搜索(post-redirect-get) 带
您到搜索结果(通过整页加载)- 然后单击主页
返回主页(通过动态获取)- 单击browser back
Search Results (from popstate listener) - 点击浏览器返回
Malformed home page。
当出现格式错误的主页时,我的 popstate 侦听器根本不存在。
我认为正在发生的是,浏览器正在缓存主页的第二次加载(动态,部分),然后当整个页面返回时,浏览器仅显示缓存的部分响应而不是整个页面.
为了解决这个问题,我在响应中添加了一个 Vary: Accept 标头,让浏览器知道内容可能会根据接受标头发生变化。我还在部分加载的内容中添加了 Cache-Control max-age=0、pragma no-cache 和过去的到期日期,以试图强制浏览器不缓存它,但这都不能解决它。
不幸的是,我的公司不允许外部流量到我们的开发服务器,所以我无法向您展示这个问题。我在这里查看了各种类似的问题,但它们似乎都不完全相同,建议的解决方案似乎也不起作用。
如果我在我的动态 GET 请求中添加一个无意义的参数 (blah=blah),这可以解决问题。然而,这是一个丑陋的黑客,我宁愿不这样做。这似乎应该可以通过标头解决,因为我认为这是一个缓存问题。谁能解释发生了什么?
html - 在窗口 addEventListener popstate 中调用函数,不起作用
我面临的问题是在 GetAjaxPageBack 函数中,每当我尝试在其中编写任何函数(如 split)或任何其他函数时,它什么都不做,并且如果我注释掉 var url = url.split("?"); 开始工作正常,但为什么我需要拆分 url 并想要获取查询字符串并想要使用 ajax 重新发送它以获取记录。
请帮忙,谢谢
webkit - PJAX:后退按钮的问题
我们的一些链接由 PJAX 包装。当用户单击 PJAX 链接时,服务器仅返回 HTML 的必需部分。
如果我执行以下操作:
- 点击 PJAX 链接
- 点击简单链接
- 按下返回按钮
浏览器将显示 PJAX 请求返回的内容。HTML 将被破坏,因为它只是要显示的 HTML 的一部分(检查这个问题)。
我们试图通过不缓存 PJAX 响应(Cache-Control
标头)来解决此问题。这解决了我们的问题,但又引发了另一个问题:当用户按下后退按钮时,WebKit (Chrome 20.0) 从服务器加载全部内容,然后触发popstate
导致不必要的 PJAX 请求的事件。
是否可以重新创建正确的后退按钮行为?