Chrome 브라우저 확장을 개발하여 이미 열려있는 모든 창과 탭에서 페이지의 배경색을 변경합니다. 해당 확장은 아이콘을 통해 활성화됩니다. 활성화 된 이후 탭의 URL이 업데이트 될 때마다 필터가 새 페이지에 적용됩니다. 그러나 새로운 배경색은 몇 밀리 초 밖에 걸리지 않습니다. 그 지연을 피하고 싶습니다. 어떻게 해결할 수 있습니까? 아마, 새로운 페이지 시각화 전에 muda_conteudo.js
파일의 코드를 삽입해야합니다 ... 긍정적 인 경우, 어떻게해야합니까?시간 초과 (지연)없이 새 탭에서 배경색을 변경하는 방법은 무엇입니까?
SEGUE O를 código :
의 manifest.json :
{
"name": "CVD Images Adaptation",
"description": "It makes the still images adaptation for CVD people",
"version": "2.0",
"permissions": [
"tabs",
"*://*/*",
"activeTab",
"debugger"
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_icon": "on.png",
"default_title": "CVD Images Adaptation"
},
"icons": {
"48": "on.png",
"48": "off.png"
},
"manifest_version": 2
}
background.js
var flag = false;
chrome.browserAction.onClicked.addListener(function(tab) {
flag = ! flag;
if (flag){
executeScriptsInExistingTabs();
}
else {
cleanExistingTabs();
}
});
// Ação levada a cabo quando é criado um novo tab
// embora não faça nada, tem que estar aqui para levar ao trigger do
// "chrome.tabs.onUpdated.addListener"
chrome.tabs.onCreated.addListener(function(tab) {
});
chrome.tabs.onUpdated.addListener(function(tabid, info, tab) {
if (flag){
if (info.status == "complete") {
chrome.tabs.executeScript(tabid, {file:"muda_conteudo.js"});
chrome.browserAction.setIcon({path: "off.png", tabId:tab.id})
}
}
});
function executeScriptsInExistingTabs(){
chrome.windows.getAll(null, function(wins) {
for (var j = 0; j < wins.length; ++j) {
chrome.tabs.getAllInWindow(wins[j].id, function(tabs) {
for (var i = 0; i < tabs.length; ++i) {
if (tabs[i].url.indexOf("chrome://") != 0) {
chrome.tabs.executeScript(tabs[i].id, { file: 'muda_conteudo.js' });
chrome.browserAction.setIcon({path: "off.png", tabId:tabs[i].id});
}
}
});
}
});
}
function cleanExistingTabs(){
chrome.windows.getAll(null, function(wins) {
for (var j = 0; j < wins.length; ++j) {
chrome.tabs.getAllInWindow(wins[j].id, function(tabs) {
for (var i = 0; i < tabs.length; ++i) {
if (tabs[i].url.indexOf("chrome://") != 0) {
chrome.browserAction.setIcon({path: "on.png", tabId:tabs[i].id});
chrome.tabs.executeScript(tabs[i].id, {code:'window.location.href=window.location.href'});
}
}
});
}
});
}
muda_conteudo.js
document.body.style.backgroundColor="red";
좋아 물론, 사용하려는 다른 muda_conteudo.js
파일입니다. 그러나 실험을 할 때 테스트를 위해 단 한 번의 간단한 instuction으로 파일을 선택했습니다.
beforeload
매개 변수와 함께 addEventListener
함수를 사용하려고 생각했지만 조작 할 수 없습니다. 나는 그것이 기술 부족인지 또는 그 기능이 의도 된 효과를 내지 않는지 여부를 모른다.
감사합니다. 그러나 작동하지 않습니다. 나는 전에 시도했다. – user3059287