【发布时间】:2017-06-06 00:24:47
【问题描述】:
我注意到,当您点击 YouTube 网站上的链接/视频时,YouTube 实际上并没有重新加载。如果您在控制台中定义一个变量,您会看到它会持续存在。
但popstate 和 beforeunload 都不会被解雇。那么 Youtube 是如何做到这一点的呢?以及如何在不让计时器不断检查 URL 栏的情况下检测到 URL 更改。
window.onpopstate = function(event) {
console.log('popstate test!')
return "test"
}
window.onbeforeunload = function(event) {
console.log('beforeunload test!')
return "test"
}
我不只是在寻找 YouTube 解决方案,而是在寻找涵盖 YouTube 正在使用的技术的通用解决方案。
【问题讨论】:
-
当他们使用 ajax 时,历史记录或 beforeunload-event 中没有条目。
-
Ajax改变地址栏的URL??
-
他们真的完全改变了网址吗?据我所见,他们最后更改了查询标志(?v=6z-DCbOLYzc):youtube.com/watch?v=6z-DCbOLYzc
-
首先,它有什么不同?我的意思是这不是一个主播。其次,如果您访问频道或主页,它肯定会比查询字符串发生更多变化。
-
是的,我知道你的意思,但 youtube 并没有什么特别之处,必须有一个常规的方法来完成它。我不太确定 iframe 是否用于跟踪历史记录,因为 history-iframe 也确实存在于常规 youtube 网站(id#history-iframe)上。非常有趣的话题!
标签: javascript youtube dom-events navigationbar