Von meinem Kopf, ich werde sagen, Sie können nur Klicks von einzelnen Tabs geöffnet erhalten. So verpassen Sie die URL-Leiste und alle anderen Bereiche des Browsers außerhalb des Tab-Bereichs.
So können Sie Klicks auf allen Registerkarten erfassen. Hinweis: Geben Sie den Code in Ihre Hintergrundseite ein.
chrome.tabs.query({}, function(tabs){
for(var i = 0; i < tabs.length; i++){
chrome.tabs.executeScript(tabs[i].id, {code:"window.onclick = function(e) { alert(e.target);};"},
function(){});
}
});
chrome.tabs.onCreated.addListener(function(tab) {
chrome.tabs.executeScript(tab.id, {code:"window.onclick = function(e) { alert(e.target);};"},
function(){});
});
chrome.tabs.onUpdated.addListener(function(tab) {
chrome.tabs.executeScript(tab.id, {code:"window.onclick = function(e) { alert(e.target);};"},
function(){});
});
Ihre Erweiterung zu informieren, dass ein Klick auf einem Ihrer Tabs aufgetreten, verwenden chrome.runtime.sendMessage
- diese Nachricht durch Hinzufügen chrome.runtime.onMessage.addListener
in Ihrer Hintergrundseite abfangen kann. Wenn Sie die Nachricht erhalten haben, können Sie die Erweiterung nachladen mit chrome.runtime.reload();
Also statt, alert()
aufzurufen, wenn ein Klick geschieht, verwenden chrome.runtime.sendMessage
, und wenn der Hintergrundseite die Nachricht bekommt, chrome.runtime.reload
sollte Neuladen der Verlängerung den Job.
Schluss Code, die alle in den Hintergrund Seite platziert, wie so aussehen:
chrome.tabs.query({}, function(tabs){
for(var i = 0; i < tabs.length; i++){
chrome.tabs.executeScript(tabs[i].id, {code:"window.onclick = function(e) { chrome.runtime.sendMessage({msgID: "click_event"});};"},
function(){});
}
});
chrome.tabs.onCreated.addListener(function(tab) {
chrome.tabs.executeScript(tab.id, {code:"window.onclick = function(e) { chrome.runtime.sendMessage({msgID: "click_event"});};"},
function(){});
});
chrome.tabs.onUpdated.addListener(function(tab) {
chrome.tabs.executeScript(tab.id, {code:"window.onclick = function(e) { chrome.runtime.sendMessage({msgID: "click_event"});};"},
function(){});
});
chrome.runtime.onMessage.addListener(function(req, sender, resp){
if(req.msgID.indexOf("click_event") > -1)
{
chrome.runtime.reload();
}
}
Sie benötigen würde das Content-Skript zu verwenden, auf allen Seiten klicken zu erkennen und Nachricht an Hintergrundskript senden – juvian
nachladen ich Sie glauben sind richtig, aber ich frage, wie ich das machen würde? – JTong
@kundrata Ansatz ist besser und sollte funktionieren – juvian