Javascript 打开和关闭镀铬延长件
这似乎是最简单的任务,但我很难做到。。。我希望通过单击扩展图标打开扩展,而不是每次打开新选项卡时。我还想在按下图标时将其完全关闭。 我在网站的DOM中插入了一个iframe,它不是一个标准的弹出窗口。现在,每当单击图标时,我都会隐藏它,但每当加载新页面/选项卡时,它仍然会插入iframe。我尝试删除iframe,但每次我重新插入它,重新抓取网站并添加到数组时都会触发content_脚本,这使得TTS在每次重新打开扩展时都会重复单词 舱单:Javascript 打开和关闭镀铬延长件,javascript,google-chrome,iframe,google-chrome-extension,Javascript,Google Chrome,Iframe,Google Chrome Extension,这似乎是最简单的任务,但我很难做到。。。我希望通过单击扩展图标打开扩展,而不是每次打开新选项卡时。我还想在按下图标时将其完全关闭。 我在网站的DOM中插入了一个iframe,它不是一个标准的弹出窗口。现在,每当单击图标时,我都会隐藏它,但每当加载新页面/选项卡时,它仍然会插入iframe。我尝试删除iframe,但每次我重新插入它,重新抓取网站并添加到数组时都会触发content_脚本,这使得TTS在每次重新打开扩展时都会重复单词 舱单: { "manifest_version": 2,
{
"manifest_version": 2,
"name": "Caliban",
"description": "Chrome extension that reads text aloud",
"version": "1.0",
"permissions": [
"tabs",
"storage",
"<all_urls>",
"tts"
],
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": [
"js/translations.js",
"js/enums.js",
"js/element-wrapper.js",
"js/content_script.js"
],
"css": [
"css/parent.css"
]
}
],
"background": {
"scripts": [
"js/translations.js",
"js/enums.js",
"js/element-wrapper.js",
"js/background.js"
]
},
"browser_action": {
"default_icon": "img/icon.png",
"default_title": "Caliban"
},
"web_accessible_resources": [
"css/*.css",
"images/*.png",
"images/*.svg",
"popup.html"
]
}
此函数在content_script.js的开头调用。同样在content_脚本中,我使用下面的函数来隐藏/显示,但之前用于创建/删除iframe
function toggleIFrame() {
if (isFrameOpen === true)
{
iframe.style.display = "none";
isFrameOpen = false;
}
else
{
iframe.style.display = "initial";
isFrameOpen = true;
}
我要找的是:
如果需要的话,我很乐意提供更多的代码。不要通过manifest
“content\u scripts”
键注入内容脚本,而是通过后台页面中的手动注入来响应
通过这种方式,您可以控制何时注入它们,并且还可以实现逻辑,在它们已经被注入时禁用它们(留给读者作为练习:)而不是通过manifest
“content\u scripts”
键注入内容脚本,通过后台页面中的chrome.tabs.executeScript
手动注入它们,以响应chrome.browserAction.onClicked
。通过这种方式,您可以控制何时注入它们,并且还可以实现逻辑来禁用它们(如果它们已经被注入)。似乎是合乎逻辑的,我会尝试一下,然后返回给您。这里和那里都有一些错误,主要是关于权限的,但这确实是我要寻找的。你可以回答,我会接受的。
function toggleIFrame() {
if (isFrameOpen === true)
{
iframe.style.display = "none";
isFrameOpen = false;
}
else
{
iframe.style.display = "initial";
isFrameOpen = true;
}