Обнаружение зарегистрированных протоколов в Windows с веб-страницы с помощью IE

Программы для MS Windows могут ассоциировать с ними некоторые протоколы. Поэтому, когда вы щелкаете в браузере, будет открыта зарегистрированная программа для протокола «myprotocol». Например, "mailto:[email protected]" открывает вашу программу электронной почты.

У меня есть веб-сайт, и я хочу знать, зарегистрировал ли посетитель моего веб-сайта какой-либо протокол в своей системе или нет. Поэтому, когда он нажимает на ссылку, а протокол не регистрирует какую-то страницу типа «Пожалуйста, установите мою программу». В противном случае запускается зарегистрированная программа. Как я могу сделать это с помощью javascript, avtiveX или чего-то еще?

Я знаю, как это сделать для Firefox и Crome (используя заголовок «Местоположение» и iframe), но не знаю, как это сделать для IE и Opera. Пожалуйста помогите.


person trashgenerator    schedule 13.09.2010    source источник
comment
Не могли бы вы уточнить, как вы перехватываете это в Firefox/Chrome? Я думаю, что ActiveX — ваш единственный вариант, поскольку браузеры, как правило, пытаются защитить JavaScript и не позволяют ему получать доступ к информации, как вы хотите.   -  person palswim    schedule 14.09.2010


Ответы (2)


Я однажды проделал такую ​​штуку. Что я сделал, так это зарегистрировал в программе установки ключ MyProgram.IsInstalled в HKEY_CLASSES_ROOT с тем же CLSID, что и Scripting.Dictionary. Затем в JavaScript я попытался сделать var isInstalled = new ActiveXObject("MyProgram.IsInstalled");. Если это работало, моя программа была установлена ​​(и у меня был удобный новый экземпляр Scripting.Dictionary, который я быстро выбросил). Если это не так, то это не так.

person Anthony Mills    schedule 13.09.2010

Прямое обнаружение произвольных протоколов в IE в настоящее время невозможно, потому что мы продолжаем сокращать предлагаемый мной API для этого. В настоящее время для этой цели необходимо использовать элемент управления ActiveX.

Для определенных протоколов вы должны просто зарегистрировать свой компонент с вектором версии, который затем можно будет обнаружить с помощью условных комментариев: http://msdn.microsoft.com/en-us/library/ms537512(VS.85).aspx

person EricLaw    schedule 13.09.2010