javascript - Chrome 扩展程序:检测页面更改的原因/发起者
问题描述
我见过的一个常见问题是“您如何检测用户是否正在离开网页?”。我已经查看了几乎所有这些问题的答案,但它们通常无法提供对该重定向发起者的可见性。
我试图从 Chrome 扩展程序中判断选项卡是否更改页面:
- 用户是否使用地址栏更改页面?
- 网页上的 javascript 是否导致页面更改?
- 用户是否与导致页面更改的 HTML 组件(即表单或锚点)交互?
- 用户是否只是关闭了选项卡?
我可能会遗漏一些其他变体,请随时在您的答案中包含其他变体。我真正想要的是:“页面更改是网站故意的,还是用户随意更改页面?”。
我列出的一些问题不是直接可能的。例如,我关于地址栏是否更改的第一个问题之前已解决但没有解决方案。一个有效的解决方案是通过消除过程。如果您可以证明问题#2-#4 不是这种情况,那么它只会留下#1 作为选项。
#2 是另一个有趣的,因为有很多方法可以通过 javascript 更改页面。你可以设置window.location.href,你可以使用window.navigate,你可以使用window.history.*(返回,去)等等。Chrome DevTools 能够追溯大多数javascript重定向,也许这是一个角度。
#3 与#2 的问题类似,存在可能导致页面更改的元素数量问题。此外,任何解决方案都需要处理动态生成的内容(即$([some selector]).on(...
)。
#4 可以通过 Chrome 的 tabs API 解决。
如果您有跨浏览器的方法,那将是一个加号。谢谢。
解决方案
推荐阅读
- react-native - 如何在 React Native 中管理内存?
- javascript - 开发表情符号组件
- javascript - 开玩笑:无法窥探该属性,因为它不是函数;给定的未定义
- android - Android Studio 代码显示为红色。但它运行成功
- java - org.openqa.selenium.WebDriverException:发生
- python - Python数组指针到C++子进程
- java - 从 Mac OS 卸载 jenkins.war
- rpa - 如何将消息从 Uipath 传递到网络浏览器
- python - ODES:ValueError:使用序列设置数组元素
- java - 如何在 jni 中显示 Windows 事件日志详细信息返回数据必须是属性数组