Ответ 1
Общее эмпирическое правило:
Плагины
Когда вы говорите о веб-браузере, плагин говорит о NPAPI или подобном плагине, который специфичен для этой страницы. IE не поддерживает "плагины" как таковой, но у них есть элементы управления activex, которые могут заполнять подобную функцию, хотя есть элементы управления ActiveX BHO (Browser Helper Object), которые больше похожи на расширения. Таким образом, мы (команда FireBreath) обычно используем термин плагин для обозначения того, что работает как плагин NPAPI, а термин "расширение" ссылается на то, что работает как типичное расширение (firefox XPI, Chrome CRX и т.д.).
Плагины знают только о своей странице; они ничего не знают о браузере или о том, что загружается на другие страницы.
Плагины несут ответственность за множество проблем безопасности, поскольку на самом деле они запускают собственный код. Это привело к большой дискриминации в отношении них - большая часть этого заслуживает. Из-за этого и потому, что NPAPI является королевской болью в шее (следовательно, FireBreath был создан), большинство браузеров пытаются поэтапно отключить плагины. Плагины никогда не должны использоваться, если нет другого способа решить вашу проблему.
Тем не менее, есть много случаев, когда они являются единственным вариантом.
расширения
Расширение - это то, что характерно для браузера, и они немного отличаются в каждом браузере, но, как правило, имеют возможность узнать больше об общем состоянии браузера; они могут автоматически добавляться на страницы, доступные отдельно от страницы и т.д.
Дополнения
Надстройка - это скорее общий термин, который используется для обозначения множества разных вещей. То, что на самом деле означает, просто зависит от того, кто говорит, но определение мозиллы, вероятно, так же хорошо, как и любое; это может быть все, что добавляет функциональность вашему веб-браузеру, независимо от контекста.
Ключевые отличия
Обычно расширения устанавливаются автоматически. Плагины создаются одним из двух способов: 1) <object>
или <embed>
в HTML-странице веб-страницы или 2), поскольку они зарегистрированы как обработчик для типа mimetype, который браузер не поддерживает,
FireBreath
FireBreath работает с плагинами. Он не имеет ничего общего с типичными расширениями браузера, только плагинами. Это структура C++, а не структура javascript, и она позволяет добавлять функциональные возможности, которые могут использоваться с веб-страницы. Обычно плагины FireBreath используются из <object>
.
FireBreath post-NPAPI
Поскольку вы можете или не можете знать, Chrome отказался от поддержки плагинов NPAPI (начиная с версии 45), а Firefox сделал это с версии 52 (за исключением версии Extended Extended Release версии 52, которая будет поддерживать их еще на один год). FireBreath 2.0 теперь используется в производстве несколькими компаниями и может создавать "плагины" (на самом деле не плагины, а работать аналогичным образом), которые могут работать с Google Chrome и Firefox через Native Messaging с помощью вспомогательного расширения. Основное ограничение - рисование; нет никакого способа напрямую подключиться к браузеру через встроенный обмен сообщениями (ну, ни один хороший способ, и вообще не на других платформах, кроме окон).
В конце концов мы можем добавить поддержку абстракции для рисования с использованием Canvas/WebGL поверх встроенного моста обмена сообщениями в FireBreath 2.0, но это еще не сделано. Честно говоря, мне это не нужно, поэтому я не потрудился это сделать. FireBreath - это система с открытым исходным кодом, которая, к сожалению, не получила достаточной поддержки от пользователей за последние пару лет, и поэтому документация немного устарела и есть много мелочей, которые не были выполнены.
Метод Native Messaging основан на расширении - мы сделали это, прежде всего, чтобы смутить всех, конечно, но также и потому, что это был единственный способ разрешить нам общаться с плагинами FireBreath со страницы в Google Chrome или Firefox.
* (Последнее обновление 6 марта 2017 г., Firefox 52 планируется выпустить завтра)
Надеюсь, это поможет. Смотрите также: