Google Chrome网络浏览器的扩展开发。您可以使用HTML,JavaScript和CSS等Web技术编写它们。
我正在构建一个 Chrome 扩展程序。我需要拦截对特定端点的请求以获取响应正文并在扩展中使用响应(一切正常,没有恶意软件) 为了做到这一点,我...
如何在 Next.js 中禁用 Google Translate 以防止客户端错误?
我的 Next.js Web 应用程序(Next.js 14、React 18)遇到问题。当应用程序加载时,我在浏览器控制台中遇到以下错误: 经过一番调查后,我发现如果我不同意...
关于 React devtools chrome 扩展未使用 JS 的 Lighthouse 报告的混乱
当我为我正在从事的项目运行 Lighthouse 时,我得到 chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/react_devtools_backend.js 作为未使用 JS 的第一大原因。 这有什么意义...
电池 api 的 navigator.getBattery() 的替代品吗?
我应该使用什么来代替 navigator.getBattery(),因为它不起作用? 我正在开发一个 chrome 扩展,我想做的是 - 函数toggleBatterySaver(启用){ 如果(启用...
我正在尝试构建一个 Chrome 扩展。这里唯一的挑战是当在任何页面上选择某些文本时显示一个图标,当他们单击该图标时,它应该使用 selecte 打开我们的扩展...
有没有办法检测何时启用开发者模式? 我想检测这一点的原因是因为我的扩展在控制台中生成了大量调试信息。并避免不必要的
我正在为 Chrome 扩展程序设置一个 React 项目,其中我需要多个入口点并在 webpack 中输出,但是当我尝试在
所以我正在创建一个 Chrome 扩展程序,将 HTML 注入到 YouTube 页面上。 该脚本在第一次加载时工作正常,但如果我向下滚动它,它就会消失。 我尝试过监控...
我正在开发一个 chrome 扩展,它将提示用户输入一个目录,然后将特定文件从该目录上传到该扩展处于活动状态的网站。理想情况下,这个扩展
selenium webdriver 导入选项给我一个 ImportError
链接到我试图在我的代码中实现的原始代码。 使用带扩展名的 Python(.crx 文件)运行 Selenium WebDriver 从硒导入网络驱动程序 来自 selenium.webdriver.chrome。
如何更改此扩展应用程序中的输入顺序,以使最新的线索位于顶部而不是底部
正如您所看到的,如果您尝试了代码并在应用程序中保存输入,它将按从上到下的顺序保存,我希望它是从下到上的顺序,这是完整的代码,如果您想要htm...
每次 Chrome 重新启动时,解压的扩展程序都会自动卸载,如何才能始终安装它?
Chrome 解压扩展程序消失 我谷歌了很长时间才找到上面的这个链接。但是,它并不能解决我的问题。 我在Mac上。而且我不想卸载 Chrome。有没有...
我可以使用 Chrome 扩展 API 获取存储密钥的值: chrome.storage.sync.get("someKey", function() {}); 如何获取 Chrome 存储中存在的所有键名称?
想要在安装 mac 应用程序时安装 chrome 扩展。 我按照 chrome 其他部署选项的开发人员网站上的说明进行操作 两种方法都试过了 本地文件网址 创建文件
所以我的问题是我们开发了一个扩展,它将默认的新标签页覆盖到自己的页面中 当覆盖新选项卡的唯一扩展是我们的但如果用户安装时,这工作正常 一个...
使用虚荣URL访问steamID64,无需steam API
我正在构建一个 Chrome 扩展程序,其中一项功能要求我使用 steamID64。 问题是我没有 steamID64 表示,有时我只有一个看起来像 l...
使用窗口对象为 Chrome 扩展定义 javascript 变量
我正在尝试为浏览器游戏创建一个动态叠加层,该叠加层将在游戏内更新时更新团队信息。游戏中用于执行此操作的函数是: 更新游戏信息() 我哈...
在Chrome扩展程序的清单中,是否可以在扩展程序之外定义update_url?
在我的场景中,我有一个自托管的 Chrome 扩展程序,并且希望在扩展程序之外指定 update_url 以提高灵活性。 有没有办法在外部指定更新URL...
Chrome 内容脚本不起作用:DOMContentLoaded 侦听器不执行
我正在尝试编写可纠正 1 个论坛上的拼写错误的扩展程序。 我正在尝试使用内容脚本访问 标签,但它不会改变任何内容(使用下面的代码): 文件。 我正在尝试编写可纠正 1 个论坛上的拼写错误的扩展代码。 我正在尝试使用内容脚本访问 <p> 标签,但它不会改变任何内容(使用下面的代码): document.addEventListener("DOMContentLoaded", function() { document.getElementsByTagName("P")[4].innerHTML = "correct_word"; }); 作为扩展添加时,它不会改变任何内容,显然,如果我wget页面,并将脚本放在那里,一切都有效。有什么想法吗? 我的manifest.json文件: { "manifest_version": 2, "name": "Extension", "description": "Description", "version": "1.0", "content_scripts": [{ "run_at": "document_end", "matches": ["http://example.com/"], "js": ["script.js"] }], "web_accessible_resources": ["Filedeleted(really).html"] } 我知道内容脚本和 WWW 页面有不同的沙箱,也许内容脚本无法访问页面(和标签)? 您将在监听火灾的事件之后注入脚本(在本例中为DOMContentLoaded)。因此,侦听器中的任何代码都不会被执行,因为在添加侦听器后该事件永远不会触发。 在 Chrome 扩展程序和 Firefox WebExtensions 中,指定注入 content script 的时间时,您可以指定 "document_start"、"document_end" 或 "document_idle"。1 在 manifest.json 中,这是为 run_at 属性指定的值。对于 tabs.executeScript(),它是 runAt 属性。 document_start 注入发生在创建 DOM 或运行页面脚本之前。这意味着 document.body 和 document.head 还不存在。 DOMContentLoaded 和 window load 事件尚未触发。您可以通过将内容添加到 document.documentElement 来将它们添加到 DOM。您可能需要使用 MutationObserver 来监视您感兴趣的要添加到 DOM 的元素,或者等待像 DOMContentLoaded 这样的事件来指示 DOM 可用。 document_end(默认) 注入发生在 DOM 完成之后、子资源(例如图像和框架)加载之前。这通常是在 DOMContentLoaded 触发之后、window load 事件触发之前。 document_idle 注入发生在 document_end 之后的某个时间以及在 window load 事件触发之后立即进行。 “run_at: document_idle 内容脚本何时运行?”的 答案 表示这是以下较早的一个: 在 window load 事件触发后,或者 DOMContentLoaded 事件触发后 200 毫秒。 这意味着您的内容脚本将在 DOMContentLoaded 触发后注入,但 window load 事件可能已经触发,也可能尚未触发。 听DOMContentLoaded或windowload时,应先检查document.readyState 任何时候您使用 DOMContentLoaded 侦听器或 window load 侦听器,您都应该在添加侦听器之前检查 document.readyState,以确保在 DOMContentLoaded 之前添加侦听器 事件被触发(或者在 load 事件被触发之前,如果您正在监听的话)。 当您想要监听这些事件时,这应该是正常习惯。如果您在事件触发后添加侦听器,则侦听器将永远不会运行。 要添加 DOMContentLoaded 侦听器,您应该使用类似以下内容: if(document.readyState === 'loading') { document.addEventListener('DOMContentLoaded',afterDOMLoaded); } else { afterDOMLoaded(); } function afterDOMLoaded(){ //Everything that needs to happen after the DOM has initially loaded. } 要添加 window load 侦听器,您可以使用类似以下内容: if(document.readyState !== 'complete') { window.addEventListener('load',afterWindowLoaded); } else { afterWindowLoaded(); } function afterWindowLoaded(){ //Everything that needs to happen after the window is fully loaded. } 如果您使用 tabs.executeScript(),则为 runAt 提供的值仅指示您希望注入脚本的最早时间。如果您在此时间之前执行 tabs.executeScript(),则注入会延迟到指定时间。请注意,对于 document_start ,执行 tabs.executeScript() 对新页面有效的点是一个复杂的主题,值得有自己的问题/答案。 此答案的部分内容复制自我对“检测并处理活动 HTML 页面中的按钮单击”的答案。 对于 manifest_version: 3,document_idle 是默认值,也是推荐值,根据官方文档。 此外,文档使得 chrome 看起来只会在内容之后加载内容脚本,但事实并非如此。如果您确实需要在内容完全加载后运行某些内容,则需要以下组合: window.load和document.readyState,在大多数情况下可以检测到加载完成,因此您可以在之后运行您的东西。它可能不适用于某些具有大量动态内容的页面。MutationObserver,检测动态内容并在第一个选项失败时重试运行您需要运行的任何内容。(可选)去抖动函数(我使用lodash/debounce),以避免突变观察器运行太多次。
我正在尝试从屏幕外访问用户麦克风 - Chrome Extension Manifest V3
我设法使用以下方法访问视频流和系统音频 等待 navigator.mediaDevices.getDisplayMedia({音频: true, 视频: true}); 但我还需要使用麦克风。我尝试使用