Ich arbeite an einem Firefox-Add-on, wo ich eine pageAction hinzufügen möchte, wenn Sie ein Video in YouTube ansehen. Mein background script funktioniert gut, bis Sie von einem YouTube-Video auf eine andere YouTube-Seite wechseln. Die pageAction verschwindet nicht. Dies ist mein Code:OnHistoryStateUpdated Filter funktioniert nicht wie erwartet
var filter = {
url:[
{
pathContains: "watch",
hostSuffix: "youtube.com"
}
]
}
function showPageAction(details) {
browser.pageAction.show(details.tabId);
}
browser.webNavigation.onCommitted.addListener(showPageAction, filter);
browser.webNavigation.onHistoryStateUpdated.addListener(showPageAction, filter);
Es passiert einfach das erste Mal drücken Sie irgendeinen anderen YouTube-Link von einer YouTube-Video-Seite (Geschichte, Haupt, Kanal usw.), denn wenn Sie zu einer anderen YouTube-Seite aus, dass zuerst gehen Klick, es verschwindet. Etwas wie:
- Neue Registerkarte öffnen
- Direkt zum www.youtube.com (Passt nicht angezeigt)
- Drücken Sie eine beliebige Video (es erscheint, wie erwartet)
- Drücken Sie eine beliebige andere Verbindung zu einem YouTube-Seite (Haupt, Geschichte, ein cannel) (es ist immer noch da, shoudn't verschwinden?)
- Drücken sie erneut eine andere Verbindung unterscheidet sich von einem Video (es verschwindet schließlich)
Ich dachte daran, einen Filter in der Funktion showPageAction hinzuzufügen, aber sollte der Filter von onHistoryStateUpdated das nicht tun?
ich nicht wirklich die Erklärung erhalten hat, sorry (Englisch ist nicht meine erste Sprache). Aber der Code funktioniert wirklich gut, nur mit einer Änderung. Ich habe versucht mit enthält und es hat nicht funktioniert und nach [ONHistoryUpdate] (https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/webNavigation/onHistoryStateUpdated) Dokumente, URL ist eine Zeichenfolge ; und es gibt keine 'contains'-Methode in string, aber' includes' hat das gleiche Ergebnis. Mit dieser Änderung brauchen Sie nicht einmal das onCommitted-Ereignis. –