2009-11-03 5 views

ответ

15

Да, как и в других браузерах, вы можете написать плагин NPAPI, который будет общаться с вашим расширением.

См соответствующей странице для Google at code.google.com

и более общее описание at wikipedia

+0

Тогда почему бы не написать его прямо как NPAPI в первую очередь? – Pacerier

36

NPAPI осуждался от Chrome/Opera для соображений безопасности.

Вы по-прежнему можете использовать NPAPI, если вы настроили таргетинг на firefox, но если Firefox следует тренду, он может также отключить его в какой-то момент.

лучших вариантов у вас есть сегодня

Использование NaCl, если вы ориентируетесь только Chrome

Вы можете использовать вместо NativeClient (AKA NaCl, AKA PPAPI - Pepper Plugin API)

Весь код побежал внутри NaCl песочница, так что она безопасна, как расширение javascript.

Используйте asm.js, если таргетинг на все платформы

Использование Emscripten вы можете скомпилировать C код/​​C++ в оптимизированная JavaScript формат называется asm.js. Он разработан, чтобы иметь близкую характеристику, и теперь имеет decent support from grade-A browsers except Safari. Хотя производительность в Firefox лучше, чем Chrome на данный момент.

Основные производители браузеров также работают над новым стандартом под названием WebAssembly, который частично вдохновлен asm.js, но не готов к прайм использования в качестве этой статьи

+0

Что такое поддержка браузера PPAPI? Является ли это только для Chrome и, следовательно, имеет мало шансов быть использованным другими браузерами в будущем? – Pacerier

+0

PPAPI также поддерживается Opera, поскольку теперь он основан на Chrome. – Eduardo

+0

Обратите внимание, что NPAPI не намного лучше, он поддерживается только Safari/Firefox, так как ни IE, ни Chrome его не поддерживают. IE использовал ActiveX, который также устарел для Microsoft Edge. Полагаю, создание встроенных плагинов для браузера не является чем-то легко выполнимым кросс-браузером. – Eduardo

0

Как сказал верхняя, вы можете использовать NaCl для хрома и asm.js с Emscripten для всех платформ, но это обратная инженерия проще, чем двоичная. Теперь существует среднее решение: webassembly - байт-код LLVM, встроенный в браузер, поддерживается большинством современных браузеров https://caniuse.com/#feat=wasm. Итак, Emscripten может скомпилировать C++ для wasm, в основном это быстрее, чем asm.js.