这似乎是最简单的任务,但我很难用它...我想通过点击扩展图标打开我的扩展程序,而不是每次打开新标签页时都打开。我还想在按下图标时关闭它完全。 我在网站的DOM中插入iframe,它不是标准弹出窗口。现在,只要点击图标,我就会隐藏它,但只要加载新的页面/标签,它仍然会插入iframe。我尝试删除iframe,它可以工作,但每次重新插入时都会触发content_script,重新抓取网站并添加到数组中,这使得每次重新打开扩展时TTS都会重复单词。
清单:
{
"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:
function createIFrame()
{
iframe.style.position = "fixed";
iframe.style.height = "300px";
iframe.style.top = "0px";
iframe.style.right = "0px";
iframe.style.zIndex = "9000000000000000000";
iframe.frameBorder = "1"; //temporary, so we can see the bounds while developing.
iframe.overflow = "hidden";
iframe.id = "CalibanMainUI";
iframe.src = chrome.extension.getURL("popup.html");
body.appendChild(iframe);
}
在content_script.js的开头调用此函数。同样在content_script中,我使用下面的函数来隐藏/显示,但之前用于创建/删除iframe。
function toggleIFrame() {
if (isFrameOpen === true)
{
iframe.style.display = "none";
isFrameOpen = false;
}
else
{
iframe.style.display = "initial";
isFrameOpen = true;
}
我正在寻找的是:
样板中是否存在这样的东西?或者我是否需要手动编码这些看似标准的要求?
如果需要,我很乐意提供更多代码。
答案 0 :(得分:1)
不是通过清单 views = []
replies = []
for data in data_container:
statistics = data.find("ul", class_ = 'threadstats')
view = re.findall("\W*Views*:\D*(\d+)*,(\d+)", str(statistics))
views.append(view)
repl = re.findall("\W*Replies*:\D*(\d+)", str(statistics))
replies.append(repl)
键注入内容脚本,而是通过后台页面中的chrome.tabs.executeScript
手动注入它们以响应chrome.browserAction.onClicked
。
通过这种方式,您可以控制何时注入它们,并且如果已经注入它们,还可以实现禁用它们的逻辑(作为读者的练习:)