Twitter 防止脚本阻塞

Twitter 防止脚本阻塞

我遇到了一个奇怪的问题。当我UBlock 起源苍白之月启用以阻止所有脚本(包括内联脚本),推特网页以某种方式表现出以下令人讨厌的行为:

  1. 右键单击时不显示上下文菜单(但双击会显示它)。

  2. 许多标准键不起作用,包括 Up/Down/PgUp/PgDn、F5、Backspace 和 Alt+Left/Right/Home。Ctrl+W 不会关闭选项卡,Ctrl+T 不会打开新选项卡(但 Ctrl+Tab 可以工作)。

我已经确认这与阻止 Twitter 脚本有关,因为我还有另外两个插件(一个是AdBlock 精简版) 通过 NsIContentPolicy 阻止下载脚本,两者均声称成功阻止:

但不要阻止:

我怀疑 UBlock Origin 也无法阻止一些脚本,这些脚本会劫持鼠标和某些键盘快捷键。当 Twitter 的所有三个插件都关闭后,上述令人讨厌的行为就会消失。

我甚至有一个油脂猴脚本设置为@run-at document-start任何stopImmediatePropagation键盘按下事件,但它无法防止键盘劫持。

我的问题

  1. 我看到第一个明显被阻止的 JS 文件是从标签链接的<script>,而不仅仅是从<link>标签链接的。所以我猜 NsIContentPolicy 对<link>标签失败了(尤其是带有属性rel='preload'?)。如果有人能解释发生了什么,我将不胜感激。

  2. 有没有办法可以 100% 保证阻止所有脚本运行,除非我逐个将它们列入白名单?

Twitter 的移动版本运行良好,不会劫持鼠标和键盘。

答案1

最后我终于有时间回过头来解决这个问题。我使用 GreaseMonkey 脚本注入事件监听器来beforescriptexecute阻止所有脚本加载,并发现 UBlock Origin (1.9.6) 无法阻止 Twitter 网页上的内联脚本运行。所以我基本上回答了我自己的问题:

  1. 问题出在 UBlock Origin 上,而根本不是标签<link rel="preload" ...>

  2. 使用这个 GM 脚本,我可以轻松阻止所有脚本并将我想要的任何脚本列入白名单。

相关内容