insertElementAtSelection перестала работать

В моем аддоне Thunderbird, который называется PasteHyperlink, у меня есть процедура, которая вставляет элемент html в сообщение Составить окно.

Раньше это работало в Thunderbird, но теперь я получаю эту ошибку js:

Error: TypeError: thiseditor.insertElementAtSelection is not a function

Однако кажется, что thiseditor определяется, потому что он не запускает предупреждение.

Вот код функции, который я свел к базовому функционалу:

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 есть эта документация, но я нигде не могу найти это говорит о том, почему это сломано или что изменилось под капотом в Thunderbird 45.

Почему это перестало работать и что мне делать вместо этого?


person bgmCoder    schedule 04.10.2016    source источник


Ответы (1)


Ну думаю я разобрался. Я изменил это:

var thiseditor = gMsgCompose.editor;

к этому:

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

Забавно, что по первому пути это работало довольно долго. Однако я не знаю, что изменилось в Thunderbird.

person bgmCoder    schedule 04.10.2016