某些Javascript是否可以检测是否安装了Skype?
我之所以要问的是,我想基于以下方式更改链接的href:如果没有安装Skype,请显示一个弹出窗口,说明Skype是什么以及如何安装它,如果已安装,请将链接更改skype:my.contact.name?call
为点击即可开始通话.房地产问题意味着我更愿意只显示一个链接.
感谢大家的答案:从链接和方法seanb和一些发布,我能够想出一个适用于IE和Firefox的解决方案,所以我想我会发布一个'完整'的答案.这是一个方便的jQuery扩展!
jQuery.extend({ skype : function(failureFunction) { var $ = jQuery; if ($.browser.safari || $.browser.opera) { return true; } else if ($.browser.msie) { try { if (new ActiveXObject("Skype.Detection")) return true; } catch(e) { } } else { if (typeof(navigator.mimeTypes["application/x-skype"]) == "object") { return true; } } $('a[href^="skype:"]').click(function() { failureFunction(); return false; }); return false; } });
HTML:
Call me Add me
使用Javascript:
jQuery(function($) { $.skype(function() { // this function gets called if they don't have skype. alert("Looks like you don't have skype. Bummer."); }); });
就是这样!
如果有人使用Safari,Opera或Chrome,它会让浏览器处理它.
编辑:重新调整函数,使其仅在页面加载时执行检查,而不是每次加载页面时执行.该$.skype
函数现在将返回一个bool,告诉您是否检测到Skype.
适用于IE和Firefox,但不适用于Chrome或Opera
function isSkypeInstalled(str) { try { /*@cc_on //The Microsoft way, thanks to the conditional comments only run in IE if (new ActiveXObject("Skype.Detection")) return true; @*/ //Tested for firefox on win if (navigator.mimeTypes["application/x-skype"]) return true; } catch(e){} return false; }