【问题标题】:Windows 8.1 / IE11 Custom URL Protocol opening to --> about:blankWindows 8.1 / IE11 自定义 URL 协议打开到 --> about:blank
【发布时间】:2013-11-22 01:48:35
【问题描述】:

Windows 8.1 / IE 11 自定义 url 协议搞砸了。启动时,应用程序被执行,然后浏览器中的 url 重定向到 about:blank

即使是 Skype 的协议也能做到:

<a href="skype:_some_skype_account_here_?chat">Chat via Skype</a>

我尝试了一些方法,例如使用 iframe、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

【问题讨论】:

    标签: windows windows-8.1 internet-explorer-11 url-protocol


    【解决方案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);
    }    
    

    【讨论】:

    • 嗯,我在 IE 11 + Win 7 SP1 中运行我的自定义 URL 协议时也遇到了问题。当我在 IE 11 + Win 8.1 中运行它时,它运行得很好。也在其他系统上。我觉得很奇怪。我会试试这个解决方案。
    • @swdev 我刚刚用我在生产中使用的版本更新了帖子。这在 IE11 Win 7 中有效——我只是仔细检查了一遍。希望这对你也有效。我正在调用一个 js 函数,它将上述函数调用为:Print Tag
    • 太棒了。会试试看!
    • 我还在更新 Win 7 到 SP1 并安装 IE 11,现在我正在阅读这篇文章:blogs.msdn.com/b/ieinternals/archive/2011/07/14/… 你也看过了吗?看来我真的必须像你一样做客户端解决方案。
    • 更新:只需使用您的解决方案解决此案例。在我的特殊情况下,我的自定义 URL 协议很长(超过 535 个字符,IE 允许的最大值——我自己测试过)。将常规超链接移动到创建 iframe 的 javascript 后,它就可以工作了!谢谢@Brian!
    猜你喜欢
    • 2020-08-31
    • 2014-05-26
    • 2010-09-09
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 2012-07-25
    • 2011-03-28
    • 1970-01-01
    相关资源
    最近更新 更多