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);
}    
Другие вопросы по тегам