У продукта Sharepoint Services от Microsoft'а много достоинств, и есть недостатки. Главный из недостатков, не устраивающий не только меня - отсутствие поддержки браузеров, отличных от Internet Explorer. Поддержки главного достоинства - открытия файлов MS Office с сайта, со ссылки, с возможностью их сохранения "обратно" из соответствующего приложения нажатием кнопки "Сохранить".
Способ, как сие исправить, в течении долгих лет искал я безуспешно. Но недавно "припёрло" - решил поставить 64-битный MS Office 2019, и обнаружил, что файлы открываться перестали (
Причину нашёл - 32 битные ActiveX в Internet Explorer не взаимодействуют с 64 битным офисом (((
Перепробовал многое, Web extension с native messaging например ... в общем - не вышло. Решил бросить и поискать нестандартно. И нашёл способ изящный до неприличия. Короче - делюсь :)
Нужно зарегистрировать в Windows свой протокол, я назвал davlink:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\davlink]
"URL Protocol"=""[HKEY_CLASSES_ROOT\davlink\DefaultIcon]
[HKEY_CLASSES_ROOT\davlink\shell]
[HKEY_CLASSES_ROOT\davlink\shell\open]
[HKEY_CLASSES_ROOT\davlink\shell\open\command]
@="c:\program files\davlink\davlink.cmd %1"
Далее, на страницу добавил jQuery и свой js-файл, который при клике на ссылку с файлом запрещает стандарное открытие файла, добавляет к адресу ссылки "davlink:" и через location.href открывает уже полученное:
davlink.cmd - думаю и сами напишите и в нужную папку положите :)
$(function(){
$("a[href]").click((t) => {
var url = "davlink:" + location.protocol + "//" + location.hostname + $(t.target).attr("href");
window.location.href = url;
return false;
});
});
Ссылку на файл я "восстанавливаю" до абсолютной, иначе какой-нибудь Word не поймёт что ему открывать :)))
При первом запуске браузер спросит разрешения на открытие таких ссылок.
Работоспособность проверена на последних версиях Google Chrome, Mozilla Firefox, Yandex browser и Opera. Так же проверена работоспособность этого решения с 32 битным MS Office 2007 - работает.
Надеюсь кому-то поможет.