Как получить доступ к div в Firefox Add-on SDK?

#javascript #firefox #firefox-addon #firefox-addon-sdk

#javascript #firefox #firefox-аддон #firefox-addon-sdk

Вопрос:

Я пытаюсь получить доступ div к тому, что было щелкнуто правой кнопкой мыши, и зарегистрировать его код (от открывающего до закрывающего тега) с помощью Add-on SDK.

 var contextMenu = require("sdk/context-menu");
 var menuItem = contextMenu.Item({
 label: "Log This Div",
 context: contextMenu.SelectorContext("div"),
 contentScript: 'self.on("click", function (e) {'   // e is empty
                '  if (!e) {e = window.event;}'   // window doesnt have event property
                '  console.log(e);'   // result is {}
                '  var text = e.target;'  
                '  self.postMessage(text);'  
                '});',
 onMessage: function (selectionText) {
      console.log(selectionText); // null
 }
});
 

Ответ №1:

Первым аргументом click обратного вызова является фактический контекст node , а не событие.

Чтобы получить внешнюю разметку узла, вы можете использовать .outerHTML

 var contextMenu = require("sdk/context-menu");
 var menuItem = contextMenu.Item({
 label: "Log This Div",
 context: contextMenu.SelectorContext("div"),
 contentScript: 'self.on("click", function (node, data) {'  
                '  self.postMessage(node.outerHTML);'  
                '});',
 onMessage: function (outerHTML) {
      console.log(outerHTML);
 }
});