Использование плагина NPRuntime в расширении Firefox

Я успешно запустил плагин NPRuntime на веб-странице, скопировав его в каталог плагинов Firefox. Я хочу создать расширение Firefox, используя его, поэтому я создал небольшое расширение, которое отображает текстовое поле и кнопку в строке состояния, нажатие кнопки вызывает функцию javascript, которая принимает значение из текстового поля и передает его в качестве аргумента функции в плагине NpRuntime, который является встроенный в XUL.

Но когда я пытаюсь вызвать функцию, я получаю исключение Javascript, так как эта переменная равна нулю.

try{
var myplugin=document.getElementById("myplugin");
myplugin.test(document.getElementById("txtUri").value);// calling function
}catch(e){
alert(e.message); //throws the error as myplugin is null
}

Когда я удаляю вызов функции, ошибки не возникает, поэтому тег вставки распознается JavaScript. Я держал плагин DLL в каталоге плагинов Firefox. Я также попытался создать каталог плагинов под расширением root и сохранить мою DLL в этом, но это не удалось.

Пожалуйста, помогите мне начать,

Спасибо

2 ответа

Решение

"который встраивается в XUL"

Как? Могу поспорить, что вы используете в пространстве имен XUL, которое не имеет особого значения.

Вы должны определить пространство имен HTML и использовать тег embed в пространстве имен html.

Когда я удаляю вызов функции, ошибки не возникает, поэтому тег вставки распознается JavaScript.

Это не верно. Если вы удалите вызов функции, то не останется кода для сбоя - getElementById никогда не генерирует (по крайней мере, в таких простых случаях). Это не означает, что ваш код XUL в порядке.

Я также попытался создать каталог плагинов под расширением root и сохранить мою DLL в этом, но это не удалось.

Это определенно должно работать. Можете ли вы поставить XPI, который демонстрирует проблему где-то?

Вызывать плагины NPAPI из расширений Firefox сложно. Один из вариантов, который выглядит как хакерский, - это вставить плагин в DOM, который представляет пользовательский интерфейс браузера.

Лучший вариант - изменить DOM страниц по мере их загрузки в браузер:

Сценарий NPAPI с плагинами не работает с Firefox

Или вы можете вообще пропустить плагин NPAPI и использовать js-ctypes:

Использование плагина, созданного с помощью Firebreath в расширении Firefox?

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