Спасибо за ответы все: из ссылок и методов 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:
<a href="skype:your.skype.username?call">Call me</a>
<a href="skype:your.skype.username?add">Add me</a>
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 сообщение Вам, если скайп был обнаружен или не .
Работы в 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;
}
Плагин в скайпе для IE изменяет DOM, таким образом, Вы можете всегда иметь 'фиктивное' поле номера телефона где-нибудь и высматривать любые введенные элементы 'промежутка' с именем класса 'skype_tb_injection'...
то, Что Вы ищете, является чем-то вроде этого:
<SPAN onmouseup=".." class="skype_tb_injection" onmousedown="..." id="softomate_highlight_0" onmouseover="..." title="Call this phone number in Thailand with Skype: +66812341234" onclick="..." onmouseout="..." durex="0" context="+66 8 1234 1234" IamRTL="0">
<SPAN class="skype_tb_nop"> </SPAN>
<SPAN onmouseup="..." class="skype_tb_imgA_flex" onmousedown="..." id="skype_tb_droppart_0" onmouseover="..." title="Skype actions" style="..." onclick="..." onmouseout="...">
<SPAN class="skype_tb_nop"> </SPAN>
<SPAN class="skype_tb_imgFlag" id="skype_tb_img_f0" style="..."> </SPAN>
<SPAN class="skype_tb_nop"> </SPAN>
</SPAN>
<SPAN class="skype_tb_imgS" id="skype_tb_img_s0" style="..."> </SPAN>
<SPAN class="skype_tb_injectionIn" id="skype_tb_text0" style="...">
<SPAN class="skype_tb_innerText" id="skype_tb_innerText0"> +6...</SPAN>
</SPAN>
<SPAN class="skype_tb_imgR" id="skype_tb_img_r0" style="...">
<SPAN class="skype_tb_nop"> </SPAN>
</SPAN>
</SPAN>
кажется, что Вы кодируете себя во что-то вроде угла там.. попытка обнаружить скайп с JS, исчерпывание экранной недвижимости.
все это могло бы быть более дружественным, если вместо этого, ссылка "Контакта" берет пользователя к странице контакта с Вашим "скайпом": ссылки и Ваш объяснительный контент загрузки в скайпе. это будет набор, более полезный, чем JS раскрывается.
Вы могли добавить некоторый prefs, как, "у меня есть скайп, не показывают эту страницу снова" флажок к этой странице. Затем используйте ту приставку для переключения ссылки "Контакта".
Нет, не обычно возможно обнаружить, если скайп или какое-либо другое программное обеспечение установлены от веб-страницы, если приложение не делает что-то определенное для предоставления доступа к информации доступной как, изменяют строку агента пользователя а-ля .NET, или у Вас есть специальное расширение браузера,
Это не было бы тем, что хочет политика безопасности JavaScript.
Без плагина или другого третьего лица наполняют Вас, никогда не получают такой infos. Только можно получить информации недостающих плагинов, но не недостающего программного обеспечения на ОС.
должно также быть проблематичным для получения этой работы над mac& linux& окна одновременно.
Могло бы стоить записать апплет Java со знаком. Тем путем можно, по крайней мере, получить доступ к ОС и определить, установлен ли Skype тот путь. Иначе, как замечено, JavaScript не позволяет такую вещь (если это сделало, Ваш компьютер уже был бы, поставленных под угрозу).
Вы можете использовать стандарт W3C, и браузер определит, какое программное обеспечение установлено для управления вызовами:
<a href="callto:<phone_number>"><phone_number></a>
Я просто тестировал в своей Fedora 12, Linux платформа, используя firefox или другой браузер не работает протокол skype.
Даже если установлен linux skype.
N.B: Вышеприведенные ссылки подходят для платформы Windows