Windows 8.1 / IE11 Custom URL Protocol, открывающийся в -> about:blank
Пользовательские протоколы URL в Windows 8.1 / IE 11 испорчены. После запуска приложение выполняется, а затем URL-адрес в браузере перенаправляет примерно на:blank
Даже протокол Skype делает это:
<a href="skype:_some_skype_account_here_?chat">Chat via Skype</a>
Я пробовал несколько подходов, таких как использование iframes, document.location.href = u; с плохими результатами.
Это работает, когда ссылка находится внутри iframe, но в противном случае происходит сбой:
<a href="javascript:'x();'>test</a>
document.location.href = 'proto://datadatadata';
Кто-нибудь знает, как запустить приложение протокола без перенаправления браузера в about:blank?
Сейчас я отношусь к IE11 как к совершенно другому браузеру: Chrome, FF, Safari, IE7-10 и IE11.
1 ответ
Решение
Эта версия работает:
var iframe = document.createElement('IFRAME');
iframe.setAttribute('id' 'protoIframe');
iframe.setAttribute('src', 'myapp://datadatadata' );
iframe.style.display = 'none';
iframe.style.width = 1+'px';
iframe.style.height = 1+'px';
document.documentElement.appendChild(iframe);
ОБНОВЛЕНИЕ: (месяцы спустя)
Это последняя версия, которую я использовал для IE. Я определяю браузер и, если IE, то делаю:
var hst = { pad:'--eof--'}
hst.forIE = function(service, data) {
var f = document.getElementById('ecPrinterIframe')
if (f )
f.parentNode.removeChild(f);
var iframe = document.createElement('IFRAME');
iframe.setAttribute('id', 'ecPrinterIframe');
iframe.setAttribute('src', 'myproto://' + data + hst.pad );
iframe.style.display = 'none';
iframe.style.width = 1+'px';
iframe.style.height = 1+'px';
document.documentElement.appendChild(iframe);
}