首页 > 解决方案 > Chrome 扩展程序:检测页面更改的原因/发起者

问题描述

我见过的一个常见问题是“您如何检测用户是否正在离开网页?”。我已经查看了几乎所有这些问题的答案,但它们通常无法提供对该重定向发起者的可见性。

我试图从 Chrome 扩展程序中判断选项卡是否更改页面:

  1. 用户是否使用地址栏更改页面?
  2. 网页上的 javascript 是否导致页面更改?
  3. 用户是否与导致页面更改的 HTML 组件(即表单或锚点)交互?
  4. 用户是否只是关闭了选项卡?

我可能会遗漏一些其他变体,请随时在您的答案中包含其他变体。我真正想要的是:“页面更改是网站故意的,还是用户随意更改页面?”。

我列出的一些问题不是直接可能的。例如,我关于地址栏是否更改的第一个问题之前已解决但没有解决方案。一个有效的解决方案是通过消除过程。如果您可以证明问题#2-#4 不是这种情况,那么它只会留下#1 作为选项。

#2 是另一个有趣的,因为有很多方法可以通过 javascript 更改页面。你可以设置window.location.href,你可以使用window.navigate,你可以使用window.history.*(返回,去)等等。Chrome DevTools 能够追溯大多数javascript重定向,也许这是一个角度。

#3 与#2 的问题类似,存在可能导致页面更改的元素数量问题。此外,任何解决方案都需要处理动态生成的内容(即$([some selector]).on(...)。

#4 可以通过 Chrome 的 tabs API 解决。

如果您有跨浏览器的方法,那将是一个加号。谢谢。

标签: javascriptgoogle-chromegoogle-chrome-extension

解决方案


推荐阅读