Как обнаружить UserAgent в подключаемом модуле NPAPI до того, как он будет зарегистрирован браузером?

Мне нужно найти способ установить плагины специально для Safari на Mac. Если я скопирую файлы .plugin в папку Internet Plug-ins, они также будут обнаружены Firefox и Google Chrome при их запуске.

Чтобы предотвратить это, я использовал вызов API NP_UserAgent для определения пользовательского агента и выхода, если это был не Safari. Однако плагины по-прежнему регистрируются в Google Chrome и Firefox. Можно ли сделать то же самое, не регистрируя подключаемый модуль ни в одном из браузеров?


person themoondothshine    schedule 30.11.2010    source источник


Ответы (2)


Если вы пишете плагин NPAPI, он должен работать в любом браузере. Можете ли вы объяснить, почему вы пытаетесь запретить пользователям, использующим другие браузеры, использовать плагин? В зависимости от основной потребности может быть лучший подход. (Например, если это должно работать в сочетании с расширением Safari, все, что вам нужно сделать, это заставить ваше расширение использовать тип MIME, который обрабатывает только ваш плагин, и тогда не имеет значения, обнаруживают ли другие браузеры плагин, потому что он никогда не будет реализован).

Вы хотите настроить таргетинг только на Safari или на любой другой браузер, использующий платформу Apple WebKit? Если второе, вы можете написать плагин WebKit вместо плагина NPAPI.

person smorgan    schedule 30.11.2010
comment
Спасибо, @smorgan... Думаю, так я буду двигаться вперед. Да, ваше предположение абсолютно верно... Плагины работают в сочетании с расширением Safari. На самом деле это существующее расширение для Firefox и Chrome, и я пытаюсь перенести его в Safari. Да, если вам это нравится :) cloudmagic.com - person themoondothshine; 02.12.2010

Одним из возможных решений является обнаружение браузера с помощью JavaScript и вставка тега <object> в HTML-страницу, только если это Safari. Но, конечно, это не мешает регистрации плагина.

Другой способ — написать плагин WebKit для Safari. Его даже проще реализовать, чем NPAPI.

person DReJ    schedule 01.12.2010