怎么标记的手机号码吗?
-
18-09-2019 - |
题
我想起来一个电话号码,为可调用的链路在HTML文档。我已经阅读 微格式的方法, 我知道, tel:
方案将标准,但是实际上无处实施。
Skype定义,因为我所知, skype:
和 callto:
, 后者具有积累了一些知名度。我假定,即其他公司有任何其他方案或跳的 callto:
火车。
什么是最佳做法标志了一个电话号码,以便使尽可能多的人尽可能与VoIP软件可以只是点击链接到一个电话?
奖金的问题:任何人都不会知道的关于复杂紧急号码,如911在我们或110在德国?
干杯,
更新: 微软网络会议需要 callto:
计划在WinXP. 这个问题 表明,微软办公室的通信器将处理 tel:
计划的但不是 callto:
人。好,雷蒙德!
更新2: 两年半以后,现在。这似乎可以归结到你想要做什么用的数量。在移动方面, tel:
是的路要走。针对桌面这是你的,如果你认为你的用户更Skype人(callto:
)或更可能会有类似谷歌的声音(tel:
)安装。我个人的意见是,有疑问的时候使用 tel:
(在线与@Sidnicious'的答复).
更新3: User@rybo111指出,Skype在铬同时跳的 tel:
浪潮。我不能验证这一点,因为没有机器都在,但如果这是真的,这意味着我们有最后一个赢家:
tel:
其他提示
我的测试结果:
拨电至:
- 诺基亚浏览器:什么都没发生
- 谷歌浏览器:要求运行 Skype 拨打该号码
- 火狐浏览器:要求选择一个程序来拨打该号码
- IE:要求运行 Skype 拨打该号码
电话:
- 诺基亚浏览器:在职的
- 谷歌浏览器:什么都没发生
- 火狐浏览器:“Firefox 不知道如何打开此网址”
- IE:找不到网址
在最好的办法是与电话开始:其中上的所有移动台的工作原理
然后把这个代码,这将仅在桌面上时运行,并且被点击的链接,只有当
我使用 http://detectmobilebrowsers.com/ 来检测移动浏览器,你可以用你喜欢的任何方法
if (!jQuery.browser.mobile) {
jQuery('body').on('click', 'a[href^="tel:"]', function() {
jQuery(this).attr('href',
jQuery(this).attr('href').replace(/^tel:/, 'callto:'));
});
}
所以基本上你覆盖所有客户群。
电话:在所有手机上的作品编号为打开拨号程序
致电第一:在您的计算机上的作品从Firefox连接到Skype的铬
正如人们所期望,WebKit的支持tel:
的延伸到Android移动浏览器,以及 - FYI
我把这个答案的“历史性”的宗旨,但不建议这样做了。见@Sidnicious的回答上面和我的更新2。的
因为它看起来像致电第一和电话家伙之间的平局,我想在希望一个可能的解决方案抛出,您的意见将带回来给我上的光的方式; - )
使用callto:
,因为大多数的桌面客户端将处理它:
<a href="callto:0123456789">call me</a>
然后,如果客户机是一个iPhone,更换链接:
window.onload = function () {
if (navigator.userAgent.match (/iPhone/i)) {
var a = document.getElementsByTagName ("a");
for (var i = 0; i < a.length; i++) {
if (a[i].getAttribute ('href').search (/callto:/i) === 0) {
a[i].setAttribute ('href', a[i].getAttribute ('href').replace (/^callto:/, "tel:"));
}
}
}
};
针对该溶液的任何异议?应予优选tel:
开始?
移动Safari(iPhone和iPod Touch的)使用tel:
方案。
RFC3966 定义的IETF标准的URI的电话号码,那是 '电话:' URI 。这是标准。有没有类似标准,指定“致电第一:”,这是为Skype上平台特定约定其中允许登记URI处理程序来支持它
这工作对我来说:
词根记忆一个符合标准的链接:
<a href="tel:1500100900">
2.replace它在未检测移动浏览器,为Skype:
$("a.phone")
.each(function()
{
this.href = this.href.replace(/^tel/,
"callto");
});
选择链接经由类取代似乎更有效。
当然它仅适用于锚定件与.phone
类。
我已经把它在功能上if( !isMobile() ) { ...
所以它触发,只有当检测到桌面浏览器。但是,这是一个过时的problably ...
function isMobile() {
return (
( navigator.userAgent.indexOf( "iPhone" ) > -1 ) ||
( navigator.userAgent.indexOf( "iPod" ) > -1 ) ||
( navigator.userAgent.indexOf( "iPad" ) > -1 ) ||
( navigator.userAgent.indexOf( "Android" ) > -1 ) ||
( navigator.userAgent.indexOf( "webOS" ) > -1 )
);
}
我用tel:
为我的项目。
它的工作在浏览器,Firefox,IE9&8,铬移动和在我的索尼爱立信智能手机上的移动浏览器。
但是callto:
并未在移动浏览器中工作。
我会用tel:
(作为推荐)。但有一个更好的回退/不显示错误页面,我会使用这样的事情(使用jQuery):
// enhance tel-links
$("a[href^='tel:']").each(function() {
var target = "call-" + this.href.replace(/[^a-z0-9]*/gi, "");
var link = this;
// load in iframe to supress potential errors when protocol is not available
$("body").append("<iframe name=\"" + target + "\" style=\"display: none\"></iframe>");
link.target = target;
// replace tel with callto on desktop browsers for skype fallback
if (!navigator.userAgent.match(/(mobile)/gi)) {
link.href = link.href.replace(/^tel:/, "callto:");
}
});
的假设是,具有在的userAgent串的移动邮票移动浏览器具有用于tel:
协议的支持。对于其余部分,我们替换为callto:
协议链接到有一个后备Skype的(如果有)。
要抑制差错页的不支持的协议(一个或多个),该链路被定位到新的隐藏的iframe。
不幸的是,似乎没有可能来检查,如果该URL已在iframe加载成功。它似乎没有错误事件被触发。
由于callto:
是每个由Skype支持的默认设置(在Skype的设置来设置),和其他人也支持的话,我会建议使用callto:
而非skype:
。
虽然苹果建议tel:
在其文档为移动Safari,目前(的iOS 4.3)它接受callto:
一样。因此,我建议使用一个通用的网站callto:
,因为它可工作在Skype和iPhone,我希望它会在Android手机上运行了。
更新(2013年6月)
这仍然是你希望你的网页,提供什么决定的问题。在我的网站,我同时提供tel:
和callto:
链接(后者标记为Skype的),因为在Mac桌面浏览器不跟tel:
任何链接而移动的Android并没有对callto:
链接什么。即使谷歌Chrome浏览器与谷歌Talk插件不响应tel:
链接。不过,我更喜欢提供桌面,以防有人已经去了越来越tel:
链接到他们的电脑上工作的麻烦,在两个链路上。
如果网站的设计决定,我只提供一个链接,我会使用一个tel:
链接,我会尝试改变callto:
在桌面浏览器。
,用适当的callto:
或tel:
方案替换页面上的所有美国的电话号码。
// create a hidden iframe to receive failed schemes
$('body').append('<iframe name="blackhole" style="display:none"></iframe>');
// decide which scheme to use
var scheme = (navigator.userAgent.match(/mobile/gi) ? 'tel:' : 'callto:');
// replace all on the page
$('article').each(function (i, article) {
findAndReplaceDOMText(article, {
find:/\b(\d\d\d-\d\d\d-\d\d\d\d)\b/g,
replace:function (portion) {
var a = document.createElement('a');
a.className = 'telephone';
a.href = scheme + portion.text.replace(/\D/g, '');
a.textContent = portion.text;
a.target = 'blackhole';
return a;
}
});
});
由于@jonas_jonas为理念。需要优良 findAndReplaceDOMText功能。
我使用正常<a href="tel:+123456">12 34 56</a>
标记和经由pointer-events: none;
使桌面用户这些链接不可点击
a[href^="tel:"] {
text-decoration: none;
}
.no-touch a[href^="tel:"] {
pointer-events: none;
cursor: text;
}
有关的浏览器不支持的指针事件(IE <11)时,点击可以用JavaScript(例如依赖于Modernizr的和jQuery)可以防止:
if(!Modernizr.touch) {
$(document).on('click', '[href^="tel:"]', function(e) {
e.preventDefault();
return false;
});
}