Javascript 添加带有自定义协议的iframe会导致IE导航到iframe源
这个问题很简单,一定有解决办法 我创建了一个 代码是:Javascript 添加带有自定义协议的iframe会导致IE导航到iframe源,javascript,internet-explorer,iframe,Javascript,Internet Explorer,Iframe,这个问题很简单,一定有解决办法 我创建了一个 代码是: $(function(){ $('<iframe>').attr('src', 'xyz://test').appendTo('body'); }); $(函数(){ $('').attr('src','xyz://test)。附于(‘主体’); }); 当iframe被追加时,IE就会导航到src。我测试了IE9和IE10。这在Firefox、Chrome或Safari中不会发生 它仅在使用自定义协议(如xyz:/
$(function(){
$('<iframe>').attr('src', 'xyz://test').appendTo('body');
});
$(函数(){
$('').attr('src','xyz://test)。附于(‘主体’);
});
当iframe被追加时,IE就会导航到src。我测试了IE9和IE10。这在Firefox、Chrome或Safari中不会发生
它仅在使用自定义协议(如xyz://而不是http://时发生
感谢您的帮助。这可能会有所帮助
应用协议
与可插拔协议相比,应用程序协议要复杂得多
更简单。他们没有将内容返回到浏览器,而是简单地
启用浏览器(或其他程序,如文字处理器或PDF)
阅读器)启动程序,将请求的URL传递给该程序
节目。应用程序协议的常见示例包括
邮件收件人:[1]新闻:,和onenote:协议
被接受的答案与解释IE行为的MSDN文章有链接。简而言之,本文解释说,没有办法测试未安装的自定义协议 在大多数浏览器中,用作iframe源的已卸载协议将在iframe内默默失败。可以观察到该故障,并将其视为未安装协议的迹象 但是,在IE中,即使协议用作iframe src,而不是单击的链接,iframe也会将父浏览器窗口重定向到失败的协议地址 为了解决这个问题,我们必须设置一个与已安装的应用程序通信的服务器端组件 在IE中,我们总是显示安装说明,当他们安装软件时,服务器端组件向浏览器发出信号,以设置一个cookie或本地存储值,指示软件已安装
这适用于大多数情况,但并非所有情况。如果此人卸载了软件,它仍然会失败。此外,如果他们清除了Cookie或本地存储,那么即使软件已经安装,他们也会被要求重新安装。我不确定我是否理解。你的意思是在iframe中显示源代码,而不是调用外部应用程序来处理URL?这确实很有帮助,谢谢!我会将您的答案标记为已接受,但随后会发布第二个答案,其中包含我们最终使用的解决方案的更多详细信息。在Win 8,IE 10+中,您可以使用msLaunchUri。引用上述文章:而是使用msLaunchUri api启动协议,如:
navigator.msLaunchUri('skype:123456',function(){alert('success');},function(){alert('failed');})代码>如果未安装协议,将触发故障回调。否则,将启动协议并触发成功回调。