javascript 在Web扩展内容脚本中,如何在执行任何其他操作之前注入并运行脚本?[副本]

xoefb8l8  于 2023-08-02  发布在  Java
关注(0)|答案(1)|浏览(102)

此问题在此处已有答案

How to disable click event on video element in youtube(3个答案)
23小时前关闭
在某些网站上,当模态对话框打开时,与我们的内容脚本UI交互会影响网页模态的'外部点击'处理程序,导致它们关闭
我的目的是在页面添加自己的侦听器之前,将“捕获阶段”事件侦听器添加到最根元素,从而允许我在event.target位于我们的UI中时执行stopImmediatePropagation(防止页面的点击处理程序甚至知道或运行)
我对chrome apis不够熟悉(webNavigation?)来了解是否有时间可以在执行所服务的页面中的任何<script>之前添加这些侦听器。
我尝试在<script>标记中添加eventTrap.js的纯文本/字符串版本,并将其添加到页面中,但这违反了内容安全策略(默认情况下,扩展在“隔离世界”中运行)
我还尝试使用document_start,并确保我们的元素是DOM中的最后一个(在大的click trap元素之后),具有更高的z索引和非静态位置。

如何注入一个在页面本身之前运行的脚本??

我目前的想法是,我可以以某种方式侦听service worker中的webNavigation事件,并以某种方式修改网页,可能使用chrome.scripting.executeScript
单击“Create Repl”打开一个模态后,当前用例为https://repl.it。我们需要这样的模态来保持开放,同时与我们的UI交互。另一个具有类似的,过于激进的捕获的网站是https://notion.so(通常在这种情况下与击键)。

lnvxswe2

lnvxswe21#

您可以在manifest.json文件内部的内容脚本部分修改run_at属性。
参考文献
您可以将其设置为document_start,以便在页面加载时运行。
但这并不能保证之前不会运行任何东西。如果有2个扩展名有这个,它将在每次页面重新加载时随机出现。(我测试了一下)

"content_scripts": [
   {
     "matches": ["https://*.nytimes.com/*"],
     "css": ["my-styles.css"],
     "js": ["content-script.js"],
     "run_at": "document_start"
   }
 ],

字符串

相关问题