2012-03-19 3 views
2

Мое веб-приложение должно определить, установлено ли настольное приложение на ПК пользователя. (Это приложение запускается из веб-приложения через пользовательский протокол приложения.) В настоящее время у нас работает «хакер-иш», но он не работает в IE10. Проведя некоторые исследования, я столкнулся с этой статьей.Кто-нибудь получил свойство javascript msProtocols для работы в IE10?

Understanding Protocols

к низу, он объясняет, как на Windows 8 & IE10, теперь вы можете обнаружить для конкретного обработчика протокола приложений с использованием JavaScript. Более подробную информацию можно найти на этом сайте: msProtocols property. Согласно примеру, я должен быть в состоянии сделать что-то вроде этого:

if (navigator.msProtocols["myProtocol"]) { 
    location.href = "myProtocol://<Some path under the myProtocol protocol>"; 
} else { 
    // Fallback code for when the "myProtocol" protocol doesn’t exist. 
} 

Я пытался получить эту работу, но не удалось. Даже используя отладчик и глядя на объект навигатора, нет свойства msProtocols.

Кто-нибудь мог заставить это работать?

+2

Выяснил мою собственную проблему. Должна была одна из первых вещей, которые я проверил, но мой режим браузера и режим документа были неправильно установлены. Как только я установил их в IE10 - стандарты, все работало красиво! –

ответ

1

В любое время, когда вы что-то тестируете с помощью Internet Explorer 8+, убедитесь, что в вашем режиме браузера и в режиме документа установлены соответствующие состояния. Например, если режим браузера меньше, чем Internet Explorer 10 и режим документа, отличный от стандартов, это предотвратит доступ к члену msProtocols.

Проверьте эти настройки, нажав F12, чтобы открыть Инструменты разработчика. В более широкую картину о том, следует ли использовать этот элемент или нет, the documentation состояния:

Этот элемент не поддерживается и не должны использоваться. Определяет, имеет ли указанный протокол соответствующий обработчик протокола.

Если вы нашли успех в использовании этого члена или нет, я бы избегал его и находил альтернативу.