Как определить установленную версию MS Office в javascript?

Мне нужно знать, установлен ли MS Office 2013 на компьютере пользователя, чтобы использовать определенный способ открытия офисных документов для редактирования с веб-сайта.

Может быть, есть какие-то плагины/activex, специфичные для Office 2013?

Я попытался выяснить, как Sharepoint выполняет эту задачу, но это слишком сложно:

this.IsProtocolHandlerEnabled = function(d) {
        if (IsStrNullOrEmpty(d))
            return false;
        if (b[d] != null)
            return b[d];
        if (c)
            return a;
        ...

«a» равно «true», если доступен Office 2013, и «false» в противном случае, но я не могу найти место, где была изменена переменная «a».


person Taras Kozubski    schedule 17.07.2013    source источник
comment
Выглядит минимизированным, a может быть где-то установлен в true как глобальный.   -  person travis    schedule 17.07.2013
comment
возможный дубликат определить версию Microsoft Office с помощью javascript   -  person Adriano Repetti    schedule 17.07.2013
comment
@Adriano: эта ссылка не дает ответа, только отрицание и вещи только для IE ...   -  person dandavis    schedule 17.07.2013
comment
@dandavis, потому что, насколько мне известно, такая информация недоступна для JavaScript (потому что она находится в реестре), поэтому вам нужно использовать объект ActiveX (= только IE). Даже интеграция с SharePoint не подходит для других браузеров.   -  person Adriano Repetti    schedule 17.07.2013
comment
@Adriano: это в плагине, я не понимаю, почему это не считается...   -  person dandavis    schedule 17.07.2013


Ответы (1)


этот метод работал для меня в chrome, вам, возможно, придется упростить итерацию для старых копий IE:

var has2013=([].slice.call(navigator.plugins)
    .filter(function(a){return a.name.match("Microsoft Office")})[0].name||"")
    .match(2013)||false;

alert(has2013);
person dandavis    schedule 17.07.2013