Использование плагина 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"
Как? Могу поспорить, что вы используете
Вы должны определить пространство имен HTML и использовать тег embed в пространстве имен html.
Когда я удаляю вызов функции, ошибки не возникает, поэтому тег вставки распознается JavaScript.
Это не верно. Если вы удалите вызов функции, то не останется кода для сбоя - getElementById никогда не генерирует (по крайней мере, в таких простых случаях). Это не означает, что ваш код XUL в порядке.
Я также попытался создать каталог плагинов под расширением root и сохранить мою DLL в этом, но это не удалось.
Это определенно должно работать. Можете ли вы поставить XPI, который демонстрирует проблему где-то?
Вызывать плагины NPAPI из расширений Firefox сложно. Один из вариантов, который выглядит как хакерский, - это вставить плагин в DOM, который представляет пользовательский интерфейс браузера.
Лучший вариант - изменить DOM страниц по мере их загрузки в браузер:
Сценарий NPAPI с плагинами не работает с Firefox
Или вы можете вообще пропустить плагин NPAPI и использовать js-ctypes:
Использование плагина, созданного с помощью Firebreath в расширении Firefox?