Использование плагина NPRuntime в расширении Firefox - PullRequest
0 голосов
/ 20 февраля 2010

Я успешно запустил плагин 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 ]

1 голос
/ 21 февраля 2010

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

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

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

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

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

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

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

0 голосов
/ 27 сентября 2011

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

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

Подключаемый модуль для сценариев NPAPI не работает с Firefox

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

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

...