2011-02-03 1 views
1

У меня есть плагин NPAPI, и я хочу определить его версию, прежде чем вставлять ее в веб-страницу. Если версия не самая последняя, ​​я хочу показать сообщение, которое просит пользователей обновить плагин.Определить версию плагина в браузере Chrome

Теперь это реализовано следующим образом

if (navigator.mimeTypes && navigator.mimeTypes["application/myplugin"]) { 
{ 
    // some code here 

    if(navigator.plugins["myplugin"] && navigator.plugins["myplugin"].version >= latest_version) { 
     // we have the latest version (embed the plugin into web page) 
     document.write ("<object id='plugin'><embed ....></object>"); 
    } else { 
     document.write ("Show message here"); 
    } 

    // some code 
} 

Проблема в том, что navigator.plugins["myplugin"].version отлично работает в Firefox, но не в Chrome. Chrome не предоставляет version. Я могу добавить свое собственное свойство в код NPAPI, но я не вижу, как я могу использовать его, прежде чем встраивать плагин в страницу.

Есть ли обходной путь?

Спасибо заранее, Эндрю

ответ

1

Я вижу много плагинов имеют информацию о версии в имени или описании. Вы должны иметь доступ к этой информации перед встраиванием.

+0

Да, я думал о том, чтобы указать номер версии в описании, например, в Silverlight. Но я хотел найти более элегантный способ :-) В любом случае, спасибо за ваш совет. – DReJ

+0

Боюсь, это ваш лучший выбор. Я считаю, что это проблема веб-кайт, поскольку Safari делает то же самое. –

+0

Да, похоже, мне нужно установить версию плагина в описании. Спасибо за помощь. – DReJ

1

Я фактически поставил номер версии в имени файла, а не даже имя или описание. Причина этого в том, что если есть несколько плагинов с тем же именем, описанием и mimetypes Firefox, как правило, будет использовать последнюю версию. Старые версии firefox были непоследовательны в том, как они справляются с этим, поэтому я даже обычно помещаю файл np ??? _ version.dll в подкаталог, зависящий от версии.

Это немного боль, но она работает одинаково в каждом браузере NPAPI.

+0

Спасибо за совет, но он должен быть только одной версией плагина в системе, и я не хочу менять имя плагина для каждой версии и создавать какой-то плагин «ад». – DReJ

+0

вот в чем смысл; вы не изменяете имя плагина, вы меняете имя файла. Конечно, вы используете только одну версию плагина в системе ... но когда вы обновляете ее, легко открыть ее одним браузером, а затем вы не сможете ее удалить. – taxilian

0

Вы можете создать свойство JSAPI вашего плагина, содержащего версию. Это свойство возвращает версию плагина при вызове из javascript. Поэтому, когда вы пытаетесь вставить/вставить плагин на странице, вы можете проверить через javascript, чтобы сделать соответствующие вызовы.