Wie ich schon in Sörens thread [PREVIEW] Enterprise Policy Generator geschrieben habe, beschäftige ich mich gerade mit meiner allerersten Extension.
Kurzer Umriss:
Die Extension erstellt eine Liste der Tabs und den kürzlich geschlossenen Tabs und zwar sowohl in der Sidebar als auch als PopUp (per Button-Aufruf).
Die erstellten Listeneinträge - also entsprechend den Tabs - können
- per linker Maustaste angewählt,
- per mittlerer Maustaste gelöscht,
- und per rechten Maustaste entladen und (in der Tabs-Leiste) verborgen werden.
Ich hänge die Extension mal gezippt an, damit man meine Problemchen nachvollziehen kann.
(Oder mir Tipps geben kann... )
[attachment=0]extension.zip[/attachment]
Kleiner Screenshot für alle, die sich das ZIP-File nicht herunterladen oder die Extension nicht installieren möchten:
[attachment=1]extension.PNG[/attachment]
Soweit funktioniert das jedenfalls schon ganz gut.
Um die Liste zu aktualisieren, benutze ich entsprechende addListener, also
und so weiter.
Aber genau der onRemoved.addListener macht mir bissel Probleme. Und eigentlich nur der.
Solange ich in der Liste selbst ein Tab entferne (mittlere Maustaste), ist alles schick.
Aber sobald ich ein Tab in der Tab-Leiste selbst lösche, wird der entsprechende Eintrag nicht sofort aus der Liste entfernt.
Erst nachdem sich die Liste durch eine andere Aktion wieder aktualisiert, ist auch der Eintrag verschwunden.
Ich könnte mir mit einer leichten Verzögerung durch setTimeout behelfen - das funktioniert. Aber ich denke, das kann es nicht sein und irgendwo mache ich einen Fehler.
Nur welchen? Lösungsvorschläge?
Banal, aber nervig: Ich habe in meiner popup.js vier Constanten jeweils Elemente aus popup.html zugewiesen.
Allerdings bekomme ich in der Konsole für genau diese eine Constante immer wieder diesen Fehler angezeigt:
ZitatTypeError: createTab is null
Was für mich völlig unverständlich und irritierend ist, denn das Element ist ja vorhanden und unterscheidet sich nicht von den anderen. Vor allem, weil es dann ja doch funktioniert, wie es soll. openOptions ist ebenfalls eine Constante und auch ein target eines addEventListener. Funktioniert ohne Fehleranzeige.
Auch ein Umbenennen von createTab hat nicht geholfen. Frage: Woran könnte dies liegen?
Ferner wird mir in der Konsole dieser Fehler vorgeworfen:
ZitatSicherheitsfehler: Inhalt auf moz-extension://74cf95bb-dfe2-4c98-b098-9d37543c7c18/popup/popup.html darf chrome://mozapps/skin/extensions/extensionGeneric-16.svg nicht laden oder verlinken.
Direkt über meine Extension wird keine chrome-Grafik geladen. Ich könnte mir aber vorstellen, das diese Fehlermeldung mit dem Auslesen der Favicons-Adresse zu tun haben könnte.
Irgendjemand Ideen dazu?
Was als nächstes ansteht, sind Optionen. Fände ich nett.
Eine Optionsseite habe ich auch bereits angelegt und ich kann sie auch aufrufen.
Was mich nun interessiert: Welche Funktionen benötige ich bzw. sollte ich mir anschauen, um das zu realisieren.
Wie werden Optionen gespeichert? Wie rufe ich diese wieder ab? Usw.
Ich erwarte keine Komplett-Lösung, nur ein paar Anhaltspunkte, damit ich nicht völlig im Dunkel des MDN herumirre...