Dienstag, 30. November 2010

JavaScript/DOM: Verhalten von appendChild()

Folgendes ist mir bei der JavaScript-Entwicklung aufgefallen.

Verwendet man die Methode appendChild(), um ein vorher bspw. mittels getElementById() (oder der PrototypeJS- bzw. JQuery-Funktion "$()") aus dem DOM geholtes Element an anderer Stelle oder in ein anderes Dokument (ein anderes Browserfenster) einzufügen, wird das an der ursprünglichen Stelle stehende Element gelöscht (!).

Dies ist kein Bug, sondern laut DOM-Spezifikation so gewollt.
If the newChild is already in the tree, it is first removed.
Soll das Element an der ursprünglichen Stelle bestehen bleiben, ist diese zunächst mittels der Methode cloneNode() zu duplizieren.

Sonntag, 14. November 2010

GrowlMail und OS X 10.6.5 / Mail 4.4

Nach meinem Update auf Mac OS X 10.6.5 (vorher hatte ich noch 10.5.x) funktionierte das Apple Mail Plugin GrowlMail nicht mehr, welches Growl Benachrichtigungen anzeigt, wenn neue Mails eintreffen.
Leider ist es so, dass bei der neuen Version von Apple Mail Plugins für jede Version von Apple-Mail, für die sie verwendbar sind, eine UUID dieser Version von Apple Mail enthalten müssen. Es kann also ein Plugin nicht mehr die Information enthalten "Ich bin für alle Versionen von Mail ab 4.0 geeignet", sondern muss alle Versionen (bzw. deren UUIDs) explizit auflisten.

Wurde GrowlMail beim Start von Mail aufgrund der (vermeintlichen) Inkompatibilität bereits deaktiviert, muss man es von dem Ordner
Users/Library/Mail/Bundles (deaktiviert)/GrowlMail.mailbundle
wieder in den Ordner
Users/Library/Mail/Bundles/GrowlMail.mailbundle
verschieben.

Dann fügt man zur in dem Bundle enthaltenen Datei Info.plist unter SupportedPluginCompatibilityUUIDs die beiden UUIDs von Apple Mail 4.4
"857A142A-AB81-4D99-BECC-D1B55A86D94E"
und
"BDD81F4D-6881-4A8D-94A7-E67410089EEB"
hinzu.

Alternativ kann man das auch über das Terminal lösen:
defaults write ~/Library/Mail/Bundles/GrowlMail.mailbundle/Contents/Info SupportedPluginCompatibilityUUIDs -array-add "857A142A-AB81-4D99-BECC-D1B55A86D94E"
defaults write ~/Library/Mail/Bundles/GrowlMail.mailbundle/Contents/Info SupportedPluginCompatibilityUUIDs -array-add "BDD81F4D-6881-4A8D-94A7-E67410089EEB"


Quelle: http://langui.sh/2010/10/14/fixing-growlmail-in-10-6-5-mail-4-4/


Nachtrag:

Für
Apple Mail 4.5 (kommt mit Mac OS X 10.6.7) lauten die UUIDs
"1C58722D-AFBD-464E-81BB-0E05C108BE06"
und
"9049EF7D-5873-4F54-A447-51D722009310".

Siehe http://langui.sh/2011/03/21/fixing-growlmail-in-10-6-7-mail-4-5/