如何将关键事件监听器添加到谷歌文档

问题描述

我正在开发一个禁用退格键的 chrome 扩展程序;它在谷歌文档中不起作用。 https://github.com/tuminzee/disable-backspace

manifest.json

    "name": "disable Backspace","version": "0.1","manifest_version": 3,"description": "A chrome extension which disables backspace key","icons": {
      "128" : "icon128.png","48" : "icon48.png","16" : "icon16.png"
    },"content_scripts": [
      {
          "matches": [
            "*://*/*"
          ],"js": [
              "main.js"
          ]
      }
    ],"permissions": [
      "input"
    ]
  }

main.js

document.addEventListener("keydown",function(event) {
  console.log(event);
  if(event.which == 8 || event.keyCode == 8 || event.code == "Backspace" ){
      event.preventDefault();
  }
});

警告

The page delivered both an 'x-frame-options' header and a 'Content-Security-Policy' header with a 'frame-ancestors' directive. Although the 'x-frame-options' header alone would have blocked embedding,it has been ignored

如果您有任何与此相关的资源,请分享。 提前致谢。

screenshot of console

解决方法

该页面同时提供了“X-Frame-Options”标头和带有“frame-ancestors”指令的“Content-Security-Policy”标头。尽管单独的“X-Frame-Options”标头会阻止嵌入,但它已被忽略

这只是一个警告,javascript没有被阻止。
X-Frame-OptionsContent-Security-Policy: frame-ancestors ... HTTP 标头执行相同的操作 - 阻止嵌入未列入白名单的 iframe。
但最后一个更灵活,所以 X-Frame-Options obsoletes 支持 Content-Security-Policy: frame-ancestors ... 如果两者都存在。因此出现此警告。 contacts.google.com 为浏览器向后兼容性发布了两个标头。
由于 contacts.google.com 负责这些标头,因此您无能为力。直接忽略它。

在研究 contacts.google.com 时,我发现它发布了另一个 CSP 标头 - Content-Security-Policy: require-trusted-types-for 'script';enter image description here

请检查开发工具中的网络选项卡,您是否观察到响应来自 contacts.google.com 的此 HTTP 标头。

此标头强制使用 Trusted Types API 访问 contacts.google.com 页面上的一些 XSS DOM 易受攻击的接收器。
如测试所示,addEventListener()not block,但可信类型可能会阻止插入扩展脚本本身。