防止来自其他脚本的不需要的行为
Preventing unwanted behaviors from other scripts
当用户的鼠标离开视口时,一些网站会显示弹出窗口。这是一种极其令人恼火的行为,我想摆脱它。我的策略是编写一个TamperMonkey脚本来消除或防止这种行为。不幸的是,我没有尝试过任何作品
注意:我正在努力使这个脚本尽可能通用。
事件是这样添加的(可能还有其他方式,但我还没有了解):
一个对象被初始化,在其中执行此行:
document.documentElement.addEventListener('mouseleave', someHandler);
示例
以下是我尝试过的:
直接按名称删除事件处理程序(为了尽可能通用,这实际上是我最后一次尝试,因为我不一定知道事件处理程序的名称):
document.dococumentElement.removeEventListener('mouseleaf',someHandler);
但这给了我以下错误:"someHandler未定义",可能是因为someHandler在对象内,无法从外部访问(我是不是缺少了什么?)
然后我想,在处理结果之前,我会尝试在给定对象上找到所有事件侦听器:
getEventListeners(document.docentElement)
但不幸的是,这种方法显然只存在于开发工具中,无法从TamperMonkey 访问
- 然后我想"也许Chrome控制台可以在每次页面加载时运行自己的脚本?"但我在这方面找不到任何东西
我的下一个想法是"如果我不能把它移走,我会阻止它开火!"。
document.dococumentElement.addEventListener('mouseleaf',myOwnHandler);
函数myOwnHandler(e){
e.停止即时传播()
}
但这也不起作用,因为我不能尽早参加活动。我告诉我的TamperMonkey脚本要尽早运行,但它仍然会被击败。要使stopImmediatePropagation()工作,我的事件需要首先启动(事件按照添加的顺序启动)。
任何关于如何让其中一个发挥作用的线索,或任何其他想法,都将不胜感激。
感谢
抱歉,无法使所有代码看起来正确。
如果这不是一个学习练习,而你只是想防止这种情况发生,为什么不使用广告拦截器呢?例如,uMatrix允许您在每个域的基础上阻止cookies/img的/scripts/frames/XHR,这样这些脚本就不会首先注册那些烦人的事件处理程序。
- 如何在不需要单击按钮的情况下获取选项的值
- Javascript不需要的关闭行为
- 删除客户端浏览器上不需要的内容
- 不允许在字段中输入不需要的字符
- 不需要的JSON响应
- 如何使图像适合TD,而不需要包装在不同的屏幕分辨率上
- 使用一个Javascript函数提交多个表单可以在FF中工作,而不需要其他浏览器
- jQuery自动完成显示不需要的动态html标记
- 脚本抛出不需要的确认窗口.如何删除
- 防止来自其他脚本的不需要的行为
- 如何使用脚本在嵌入网站上隐藏不需要的元素
- jquery简单的计算脚本几乎不需要帮助
- 从Ajax执行PHP脚本,而不需要等待答案(也不需要守护进程)
- Livecycle ES2—运行一个不需要退出字段的脚本
- JS插件在页面上不需要时破坏其他脚本
- 使用angularjs上传文件,不需要php脚本
- 转义 Javascript 序列的最简单方法是什么,如果嵌入到 HTML 代码的脚本标签中,会导致不需要的功能
- 如何检测我的页面中是否注入了不需要的 chrome 内容脚本
- 从html页面中删除不需要的脚本和iframe
- 模块化一个AngularJS应用后,如何在不需要输入大量脚本的情况下将整个项目包含在index.html中?标签