Ich habe diesen Teil des Codes (alles ist in background.js), der grundsätzlich Javascript in Seiten basierend auf ausführt URL der Seite Es sollte mit dem Klicken auf die Symbolleistenschaltfläche und dem Befehl Strg + Q funktionieren.Ungeprüfter lastError-Wert: Fehler: Kein passendes Fenster - Ich erhalte diesen Fehler beim Ausführen eines Skripts mit Befehl in Firefox WebExtension
I weisen es Knopf wie diese klicken, und es funktioniert:
chrome.browserAction.onClicked.addListener(function(tab) {
browser.tabs.query(
{active:true},
function(tabs) {
var tab = tabs[0];
if(tab.url.indexOf("app.fillz.com/orders/edit") != -1){
chrome.tabs.executeScript({
file: "fillz.js"
});
} else if(tab.url.indexOf("amazon") != -1 && tab.url.indexOf("buy/addressselect/handlers/display.html") != -1){
chrome.tabs.executeScript({
file: "amazon.js"
});
}
}
);
});
Problem ist, wenn ich versuche, die gleiche Code zu dem onCommand Ereignis zuweisen, wie folgt aus:
chrome.commands.onCommand.addListener(function(command) {
if (command == "fills2amazonCopyAndPaste") {
browser.tabs.query(
{active:true},
function(tabs) {
var tab = tabs[0];
if(tab.url.indexOf("app.fillz.com/orders/edit") != -1){
console.log("FILLZ");
chrome.tabs.executeScript({
file: "fillz.js"
});
} else if(tab.url.indexOf("amazon") != -1 && tab.url.indexOf("buy/addressselect/handlers/display.html") != -1){
console.log("AMAZON");
chrome.tabs.executeScript({
file: "amazon.js"
});
}
}
);
}
});
Befehl erkannt wird, auch die URL des gerade aktiven Tabs, habe ich mit den beiden console.log() -Befehlen im obigen Code überprüft, aber Skripte werden nicht ausgeführt, wenn ich versuche, es mit Befehl auszuführen. In Browser-Konsole gibt es nur diesen Fehler:
Unchecked lastError value: Error: No matching window
mit Ursprung aus: //gre/modules/ExtensionUtils.jsm
Was könnte das Problem sein, ich weiß, meine manifest.json Datei ist in Ordnung als Befehl wird erkannt, aber es wird einfach nicht ausführen Javascript ...
Vielen Dank für den Code in Ihrer Frage. Insbesondere für das Debugging möchten wir die Antworten, die wir liefern, gerne testen. Das bedeutet, dass wir in der Lage sein müssen, das Problem zu duplizieren und dann Änderungen vorzunehmen, die überprüft werden, um das Problem zu lösen. Es ist * erheblich * einfacher, dies zu tun, wenn Sie ein * complete * [mcve] angeben, das das Problem veranschaulicht, das Sie sehen.Wenn Sie dies nicht tun, müssen wir deutlich mehr Anstrengungen unternehmen, um Ihnen zu helfen. Das wird den Pool von Leuten, die das tun werden, erheblich reduzieren. Es bedeutet auch, dass wir * raten * müssen, wie der Rest des Codes sein sollte. – Makyen
Ich habe diese Frage abgelehnt, weil sie kein vollständiges [mcve] enthält. Bei einem * Minimum * enthält es nicht Ihre Datei * manifest.json *. Ohne die in der Frage enthaltene Datei gibt es für niemanden eine Möglichkeit, zu der Lösung zu gelangen, die Sie in der Antwort, die Sie auf diese Frage gepostet haben, enthalten. Als solche hat die Frage wenig Wert für jeden, der sie in Zukunft sieht. Wenn Sie die Frage aktualisieren, um eine [mcve] einzubeziehen, werde ich meine Down-Abstimmung entfernen. Wenn Sie dies tun, hinterlassen Sie bitte einen Kommentar mit @Myyen, damit ich über die Änderung informiert werde. – Makyen