javascript - 为什么谷歌浏览器会在 pushState 上访问服务器?

标签 javascript html google-chrome pushstate

我测试了 Chrome(Linux 和 Windows)、Firefox 和 Opera。

每次我执行 pushState,Chrome 都会转到服务器。它似乎没有以任何方式使用请求,我只是注意到它是因为我在看日志文件。

请求如下:

16 Mar 2013 01:00 PM ip=127.0.0.1 agent=Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22 uri=/ T1=0ms T2=0ms T3=0ms 

这是代码行:

history.pushState({}, 'my_app', URL);

我知道 URI 表示“/”,但这甚至不是被推送的 URL。

Firefox 和 Opera 不这样做,对我来说这似乎是不正确的行为。是错误吗?

我担心的原因是缩放。我不希望用户在浏览我的应用时发出虚假请求。

最佳答案

@JavascriptNewbie - 你不是一个人 :D

祝贺你成为这个星球上(或至少是互联网上)唯一注意到这一点并且精通到实际检查你的臭日志的红润人。

优点: Chrome 和 Firefox 可以在他们喜欢的时候进行预取,有时使用 pushState 进行预取以更好地返回/转发。在您的情况下,它看起来至少由于您页面中的某些内容而中止了“预呈现”......但您可能想要检查它是否也在预取和执行您的链接脚本或样式。

短片: Chrome 和 FireFox 可能会决定从服务器获取 pushState/replaceState url,以便能够优化他们的后退/转发缓存,以防人们从导航栏复制和粘贴 url。这是不确定的,并不总是会发生。

龙: 情况会变得更糟,除非您遇到此处提到的限制之一:https://developers.google.com/chrome/whitepapers/prerender Chrome 实际上会解释并执行您的 javascripts...这可能会触发 AJAX 甚至 Websockets 之类的东西。

The Longer:我已经完成了一个测试套件并在此处撰写:https://github.com/nickhsharp/prefetchNightmare这最终可能会成为一篇博文。

关于javascript - 为什么谷歌浏览器会在 pushState 上访问服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15453399/

相关文章:

带有 chrome 驱动程序的 python selenium "send_keys"会掉落字符

javascript - 跨度复制输入文本会弄乱其他连续的空格

javascript - 如何阻止 60 秒计时器成为 "jumpy"(css/javascript)

javascript - 输入键创建一个新段落

javascript - 在 Qualtrics 上,如何使用 javascript 保存嵌入式数据(假设最近更新了 qualtrics 并且旧的 SO 解决方案不再有效)

javascript - 降序表以及 JavaScript 中的升序

javascript - `Math` 可以按照结构化克隆算法克隆吗?

Webkit HTML 通知中的表单?

javascript - 使用 Jquery 点表示法将属性附加到对象

javascript - 如何使图像从左侧 0,0 位置向右滑动到右侧末端?