Я столкнулся со странной проблемой. Когда я включил UBlock Origin в Pale Moon, чтобы заблокировать все скрипты (включая inline-скрипты), веб-страница Twitter как-то показывает следующее неприятное поведение:
Это не показывает контекстное меню при щелчке правой кнопкой мыши (но двойной щелчок правой кнопкой вызывает его).
Многие стандартные клавиши не работают, в том числе Up / Down / PgUp / PgDn и F5 и Backspace и Alt + Left / Right / Home. Ctrl + W не закрывает вкладку, а Ctrl + T не открывает новую вкладку (но Ctrl + Tab работает).
Я подтвердил, что это связано с блокировкой скриптов Twitter, потому что у меня есть два других аддона (один из которых AdBlock Lite ), которые блокируют загрузку скриптов через NsIContentPolicy, оба из которых утверждают, что успешно блокируют:
Но не блокируйте
https://abs.twimg.com/c/swift/en/bundle/timeline.d1b4f75f296f886e49e746b3d6acd832e55f9884.js
https://abs.twimg.com/c/swift/en/bundle/boot.edfcb53dfdd7dfa0066212c8f7b4e193d97e4dca.js
Я подозреваю, что UBlock Origin также не может блокировать некоторые скрипты, которые захватывают мышь и некоторые сочетания клавиш. Когда все три надстройки отключены для Twitter, вышеуказанное неприятное поведение исчезает.
У меня даже есть Greasemonkey скрипт установлен @run-at document-start
и stopImmediatePropagation
на любом KeyDown события, но он не в состоянии предотвратить угон клавиатуры.
Мои вопросы
Я вижу, что первый файл JS, который явно заблокирован, связан с
<script>
тегом, а не только с<link>
тегом. Итак, я предполагаю, что NsIContentPolicy не работает для<link>
тегов (особенно с атрибутомrel='preload'
?). Буду признателен, если кто-нибудь сможет объяснить, что происходит.Есть ли способ, которым я могу иметь 100% гарантию блокировки всех скриптов от запуска, если я не внесу их в белый список на индивидуальной основе?
Мобильная версия Twitter отлично работает и не угнать мыши и клавиатуры.
<link rel='preload'>
обрабатывается тег? Как я могу получить эти запросы?TypeError: elem.matches is not a function @ chrome://ublock0/content/js/scriptlets/load-large-media-interactive.js:160
.Ответы:
Наконец-то у меня было время вернуться к этому. Я использовал сценарий GreaseMonkey, чтобы внедрить прослушиватель событий для
beforescriptexecute
предотвращения загрузки всех сценариев, и обнаружил, что UBlock Origin (1.9.6) не может блокировать выполнение встроенных сценариев на веб-странице Twitter. Поэтому я, по сути, ответил на свой вопрос:Проблема была с UBlock Origin, а не с
<link rel="preload" ...>
тегами.Используя этот сценарий GM, я могу легко заблокировать все сценарии и, в частности, белый список любого, который я желаю.
источник