2016-10-04 4 views
0

In meinem Thunderbird-Addon PasteHyperlink habe ich eine Routine, die ein HTML-Element in das Message Compose-Fenster einfügt.insertElementAtSelection funktioniert nicht mehr

Diese verwendet in Thunderbird zu arbeiten, aber jetzt bekomme ich diesen Fehler js:

Error: TypeError: thiseditor.insertElementAtSelection is not a function 

Allerdings scheint es, dass thiseditor definiert wird, weil es die Warnung nicht gestartet wird.

Hier ist der Code der Funktion, die ich auf die Grundfunktionalität reduziert haben:

var thiseditor = gMsgCompose.editor; 
if (!thiseditor){ alert("Dude, the gMsgCompose.editor is broken") };  
let link = thiseditor.document.createElement("a"); 
link.setAttribute("href", "http://stackoverflow.com"); 

link.textContent = "Display Text"; 
thiseditor.insertElementAtSelection(link, false); 

MDN has this documentation, aber ich finde nicht alles überall, die darüber spricht, warum diese gebrochen ist oder was unter der Haube geändert in Thunderbird 45.

Warum hörte das auf zu arbeiten, und was sollte ich stattdessen tun?

Antwort

0

Nun, ich denke ich habe es herausgefunden. Ich änderte sich dies:

var thiseditor = gMsgCompose.editor; 

dazu:

var thiseditor = gMsgCompose.editor.QueryInterface(Components.interfaces.nsIHTMLEditor); 

Komisch, es die erste Möglichkeit für eine recht lange Zeit gearbeitet. Ich weiß nicht, was sich in Thunderbird geändert hat.