Google Chrome网络浏览器的扩展开发。您可以使用HTML,JavaScript和CSS等Web技术编写它们。
所以我正在创建一个 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}); 但我还需要使用麦克风。我尝试使用
“无法访问 url 的内容”-Manifest v3 Chrome 扩展
我在background.js中遇到错误未选中的runtime.lastError:无法访问url的内容。扩展清单必须请求访问此主机的权限。和未检查的runtime.lastError:无法
我有一个扩展,可以在切换输入框后将某些查询参数添加到 URL 中。但是,当导航到同一域上的另一个页面时,它会下降。 我的目标 – 我想坚持...
开发时禁用 MAX_WRITE_OPERATIONS_PER_HOUR
有没有办法在开发过程中禁用 Chrome 存储的 MAX_WRITE_OPERATIONS_PER_HOUR 设置?我现在完全被阻止了,因为我在测试新功能时达到了最大值。是
我必须同步两个网站的内容。 在第一个网站上,我有一个客户列表及其 URL,我想阅读包含活动客户 ID、名称和目标的标题。
chrome.webRequest.onBeforeRequest.addListener 无法读取未定义的属性“onBeforeRequest”
我正在尝试构建自己的 chrome 扩展,并且正在尝试使用 onBeforeRequest 添加事件处理程序。 我的清单.json: { “清单版本”:2, "name": "我的分机", “描述...
我试图在 VSCode 上调试 chrome 扩展,在该尝试中我注意到断点在脚本上不起作用(例如,background.js);所以我用谷歌搜索,看了一些帖子,然后...
在页面更改时重新加载 Chrome DevTools 扩展侧边栏
这可能是 Google Chrome DevTools Extension - Detect Page Change 中问题的重复,但它已经存在一年多了,没有真正的答案,也许我的问题会提供一些新的