Невозможно получить доступ к функциям NPAPI в расширении Firefox

У меня проблемы с загрузкой плагина NPAPI для расширения Firefox. То, как я это делаю сейчас, - это то, что плагин уже зарегистрирован в Windows, поэтому я загружаю элемент embed через оверлей, который внедряется в chrome и доступен через window.onload. Очевидно, элемент NPAPI загружен, но я не могу получить доступ к каким-либо собственным функциям.

Вот мой main.xul:

<overlay ...>
  <window id="main-window">
    <embed type="application/x-myplugin" id="myplugin" width="300" height="300"></embed>
  </window>
</overlay>

Я установил значения ширины / высоты, чтобы видеть вставку, вставленную в хром.

Вот мой JS:

window.addEventListener("load", function () {  

  var plugin = document.getElementById("myplugin");
  dump(plugin + "\n");
  dump("version: " + plugin.version + "\n");

});

Свалка:

[object XULElement]
undefined

Если бы тот же код встраивания был помещен в документ HTML, plugin.version вернул бы "1000". Плагин NPAPI подтвержден и работает, так как я могу заставить его работать в HTML-документе и загружать его в расширение Chrome.

Я что-то не так делаю? Обратите внимание, что я должен загрузить плагин NPAPI внутри Chrome, а не вставлять его по требованию на страницу, так как свойства должны быть получены из других диалоговых окон, отдельно от веб-страницы. Возможно, есть другой способ загрузить плагин NPAPI, который можно загрузить один раз за загрузку браузера, который можно вызвать из расширения Firefox.

Если это какая-либо помощь, NPAPI был построен с фреймворком Firebreath.

Примечание: я проследовал по этой теме: ссылка и, очевидно, может загрузить плагин, но все еще не может получить доступ к каким-либо функциям.

Благодарю.

1 ответ

Решение

Здесь нет <embed> тег в XUL, вы хотите использовать HTML <embed> тег. Используйте пространство имен HTML для этого тега:

<embed xmlns="http://www.w3.org/1999/xhtml" ...></embed>

Дополнительная информация: https://developer.mozilla.org/en/Namespaces

Другие вопросы по тегам