2016-05-16 22 views
1

Ich ziehe dieses Attribut direkt aus der about.xul-Datei von Mozilla Firefox, die das Dialogfeld für ein Add-on zeigt. Es ist ein relativ einfaches XUL-Dialogfeld ohne Eingaben, Gebietsschema-Daten aus DTD-Entitäten, String-Bundle-Eigenschaften und JavaScript.Erklärung von (undokumentiert?) XUL Dialogattribut buttoniconaccept (und ähnlich)

<!-- omni.ja!/chrome/toolkit/content/mozapps/extensions/about.xul --> 
<!-- chrome://mozapps/content/extensions/about.xul --> 

<dialog id="genericAbout" 
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 
    onload="init();" 
    buttons="accept" 
    buttoniconaccept="close" 
    onaccept="close();"> 

MDN: Dialogs and Prompts und MDN: dialog erwähnen beide etwas über Attribute, die durch Verketten (pseudo-regexp) gebildet werden:

"button" + "(label|accesskey|oncommand)" + "(accept|cancel|disclosure|help|extra[12])"

Zum Beispiel: buttonlabelaccept.

Ich konnte jedoch keine Dokumentation über die Verwendung von icon finden. Das Wort icon erscheint nicht einmal auf einer der oben genannten Seiten! Was tut es? Was ist der richtige Weg, um es zu benutzen?

Ich versuche, mein Add-on über Seite modularer zu machen, ohne interne Dateien von omni.ja (r) zu laden, die viel unnötigen Code mit sich zieht. Ich entwickle eine sehr stromlinienförmige Version, die sich je nach Aufrufkontext passend anpasst.

Ich mag es wie Firefox offizieller über < addon.name> Dialog suchen, wenn etwa genannt: addons Kontextmenü, oder von meinem Add-On-Status-Bar Kontextmenü. Ich möchte ein etwas anderes Aussehen haben, wenn es im Dialogfeld Optionen als ein Iframe in einem XUL angezeigt wird. Ich habe diese Struktur bereits eingerichtet. Nur die kleinen Macken zu zwicken.

Dies ist nicht kritisch Design oder Feature weise, und in der Tat wird die gesamte API in ein paar Monaten weggehen, aber es stört mich nur nicht wirklich zu verstehen, also möchte ich es herausfinden, bevor ich es gehen lassen gehe zu wichtigeren Dingen über. Aber ich werde, wenn ich absolut keine Antwort finden kann. Aber es ist eines dieser dummen kleinen Dinge, die mich nur überproportional belästigen. = D

Wenn Sie mich auf Dokumentation verweisen können, die ich verpasst habe, oder sogar bestimmten Mozilla-Quellcode, und ein paar Beispiele oder eine ausführlichere Erklärung und typische Anwendungsfälle, das wäre toll.

Antwort

1

Wenn Sie die "blame" für about.xul überprüfen, werden Sie sehen, dass die Zeile added war, um bug 422763 zu beheben. Gemäss dem Screenshot des Bugs hat GNOME (Linux) eine Konvention, Symbole auf Dialogfeldern zu setzen, und dieses Attribut erlaubt das Überschreiben des Standardsymbols (abgeleitet vom Button-Typ). Wenn Sie search for buttonicon sind, finden Sie die code that handles this attribute in toolkit/content/widgets/dialog.xml.

+0

Ein anderes [Beispiel der Suche durch den Moziilla-Code] (http://stackoverflow.com/questions/36507832/how-can-i-find-firefox-code-that-open-add-new-bookmark-window) könnte nützlich sein, da Sie scheinen, in die Details zu graben, wie Dinge funktionieren :) – Nickolay

+0

Ok, danke! button + icon + (accept | cancel | disclosure | help | extra1 | extra2) Ich denke, die möglichen Werte sind. Ich grabe, bis ich es verstehe oder nicht mehr kann. Ich höre gerne auf zu graben, wenn ich die erste doc-Datei lese, weil alles wunderbar erklärt wird, was es mir erlaubt, schnell und einfach zu bestimmen, welcher Code geschrieben werden muss, um eine Aufgabe zu erfüllen, aber manchmal ist das nicht der Fall Fall.^_ ^ – user314159