我写了一个谷歌浏览器扩展程序,弹出一个带有自动填充字段的对话框,它有自己的风格,但是有些网站我的CSS完全坏了,看起来不太好看.
我知道使用iFrames隔离样式,但在Google Chrome扩展程序中,无法以这种方式隔离我的HTML和CSS.另一种方法是将我的所有东西包装成一个单独的div,它有自己的id和相关的id,我这样做,但似乎它不适用于某些网站上有"硬"标签样式重载或"! CSS代码中的重要"指令.
所以,我想知道有没有办法真正以z方便的方式隔离我的样式,或者是我的坏carma重载每个小CSS属性来修复每个站点的一个或另一个样式问题?
顺便说一下:我设置我的清单来加载"document_end"中的所有内容,但我发现它并没有被应用到每次DOM准备就绪时每次加载的样式表.
我很难找到有关如何为"Ctrl + C"添加监听器,获取剪贴板数据,然后在Chrome扩展程序中写回剪贴板的最新信息.我找到的所有旧代码都是针对旧版本的,现在已弃用.
我想点击我的 Chrome 扩展程序的浏览器操作按钮来复制一些文本,但网站上使用的方法不起作用。
(我意识到有一些类似的问题,但是他们回答在注入的脚本或浏览器操作弹出脚本中复制文本,而不是浏览器操作脚本。)
清单.json:
{
"name": "Example",
"version": "0.0.0",
"manifest_version": 2,
"permissions": ["clipboardWrite"],
"browser_action": {"default_title": "Copy some text"},
"background": {
"scripts": ["events.js"],
"persistent": false
}
}
Run Code Online (Sandbox Code Playgroud)
事件.js:
chrome.browserAction.onClicked.addListener(_ => {
copy(new Date().toISOString().slice(0, 19))
})
// Define copy() here.
Run Code Online (Sandbox Code Playgroud)
不要定义copy
并希望它像在控制台中那样全局定义。
不是。
function copy(text) {
navigator.clipboard.writeText(text)
}
Run Code Online (Sandbox Code Playgroud)
失败并显示错误消息“DOMException: Document is not focus”。
function copy(text) {
focus()
navigator.clipboard.writeText(text)
}
Run Code Online (Sandbox Code Playgroud)
这与方法 2 的行为相同。
function copy(text) {
const ta = document.createElement('textarea')
ta.value = text
ta.select()
document.execCommand('copy')
ta.remove() …
Run Code Online (Sandbox Code Playgroud)