我有一个电话号码的锚点.在手机上很棒.在使用Skype或Google Voice的台式机上,它很不错.问题出在台式机上,只是不知道如何处理它.
我该怎么办?检测它是否不可移动并更改链接?我仍然希望链接显示,只是URL不同.
有没有更好的办法?如果没有,我如何在JavaScript中检测移动设备以更改href属性?
谢谢.
我们收到的投诉是,我们网站的一些访问者拨错号码与我们联系.
我们的网站在页脚中有以下表格的超链接:
Call us at <a href="tel:+4712345678">12345678</a>
Run Code Online (Sandbox Code Playgroud)
请注意,"+47"(国际代码)不会直观显示,它仅包含在超链接中.但现在事实证明,有限数量的人(大约每天一次)实际上是拨打私人当地号码47123456.考虑到我们的业务规模并不多,但对接收这些电话的家庭来说仍然是一个主要的麻烦.
打电话的人说他们只是按下拨号链接.
还有其他人有这些问题吗?有人知道手机没有正确支持tel超链接吗?对解决方案的任何建议?(当然,除了更改我们或他们的电话号码.)
在 URI 中,空格可以编码为+. 既然如此,那么在创建具有国际前缀的 tel URI 时是否应该对前导加号进行编码?
哪个更好?两者在实践中都有效吗?
<a href="tel:+1234">Call me</a>
<a href="tel:%2B1234">Call me</a>
Run Code Online (Sandbox Code Playgroud) 我有一个组件使用xtype="richtext"我的项目中的Rich Text Edit小部件(),它在整个站点中用作默认文本组件.
用户希望能够使用telURI方案将电话链接插入使用此组件输入的文本中.
该对话框允许他们这样做,但是当稍后在Sightly/HTL中呈现富文本编辑的内容时,将使用html上下文:
{$text @ context='html'}
Run Code Online (Sandbox Code Playgroud)
完成此操作后,将忽略my属性的值.
存储在存储库中的HTML是:
<a href="tel:04242424242">Call us!</a>
Run Code Online (Sandbox Code Playgroud)
在作者实例的页面上实际呈现的是:
<a>Call us!</a>
Run Code Online (Sandbox Code Playgroud)
在发布者上,由于链接检查器,标签会被完全删除.
更改上下文会unsafe导致href渲染,但这不是我愿意接受的解决方案.该组件在很多地方使用,我想确保XSS保护足够.
有没有办法影响htmlHTL中的上下文处理电话链接的方式?
我尝试在叠加层中添加一个额外的正则表达式apps/cq/xssprotection/config.xml:
<regexp name="onsiteURL" value="([\p{L}\p{N}\\\.\#@\$%\+&;\-_~,\?=/!]+|\#(\w)+)"/>
<regexp name="offsiteURL" value="(\s)*((ht|f)tp(s?)://|mailto:)[\p{L}\p{N}]+[\p{L}\p{N}\p{Zs}\.\#@\$%\+&;:\-_~,\?=/!]*(\s)*"/>
<regexp name="telephoneLink" value="tel:\+?[0-9]+"/>
Run Code Online (Sandbox Code Playgroud)
进一步说:
<attribute name="href">
<regexp-list>
<regexp name="onsiteURL"/>
<regexp name="offsiteURL"/>
<regexp name="telephoneLink"/>
</regexp-list>
<!-- Skipped for brevity -->
</attribute>
Run Code Online (Sandbox Code Playgroud)
但这似乎并没有影响Sightly/HTL在html上下文中转义字符串的方式.
我也试过覆盖Sling xss规则,/libs/sling/xss/config.xml但也没有运气.
怎么做到呢?
如何创建<a href="tel:"></a>指向紧急电话号码(例如911或)的HTML 链接112?
该RFC说
电话号码可以以全局或本地符号表示。所有电话号码都必须使用全局格式,除非不能这样表示。[紧急号码(“ 911”,“ 112”)]不能以全局形式表示,而需要在上下文中表示为本地号码。
从本地上下文部分,我不容易理解什么是“本地上下文”,更不用说什么是正确的情况了。它列出了域前缀(如)houston.example.com或数字前缀(如)+1,并在一段中表示
由全球号码的起始数字组成的上下文并不意味着将这些数字添加到本地号码将产生有效的E.164号码。它可能是偶然巧合的,但这不能依靠。(例如,“ 911”应标记为上下文“ +1”,但“ + 1-911”不是有效的E.164号。)
但是,这一段的措词再次令人非常困惑。
是
<a href="tel:+49-112">112</a>
Run Code Online (Sandbox Code Playgroud)
现在正确的处理方式与它不是有效的E.164号码这一事实无关吗?
还是它不是有效的E.164号码是一个问题吗?
在其他一些地方,我看到人们在使用
<a href="tel:112;phone-context=emergency.example.com">112</a>
Run Code Online (Sandbox Code Playgroud)
<a href="tel:112;phone-context=+49">112</a>
Run Code Online (Sandbox Code Playgroud)
但是当我在Android上点击该链接时,拨号器会打开并显示数字
112;746632668398+49
Run Code Online (Sandbox Code Playgroud) 因此,当我尝试在这里验证它时,我收到此错误:
元素 a 上的属性 href 的错误值 tel:0000 00 00 00:方案数据中存在非法字符:不是 URL 代码点
我的 html 看起来像这样:
<a href="tel:0000 00 00 00">0000 00 00 00</a>
Run Code Online (Sandbox Code Playgroud)
有没有什么办法解决这一问题?
如果您想设置一个可单击的电话号码,则可以使用“ tel:”进行设置,但是反过来呢?如果有一个Callerid,我希望这个Callerid不可点击怎么办?
我正在尝试在更改事件(HTML <select>标记)上启用电话呼叫功能,以便引用适当的"tel:"值.
我在Android 上运行测试(版本2.2和4.0),使用默认浏览器:我没有得到预期的效果.
以下是我的代码:
HTML
<select class="call-us-options">
<option value="">Select a branch:</option>
<option value="branch-a">Branch A</option>
<option value="branch-b">Branch B</option>
<option value="branch-c">Branch C</option>
</select>
<a class="phone branch-a" href="tel:(22) 2222-222" title="Branch A">Branch A</a>
<a class="phone branch-b" href="tel:(33) 3333-3333" title="Branch B">Branch B</a>
<a class="phone branch-c" href="tel:(44) 4444-4444" title="Branch C">Branch C</a>
Run Code Online (Sandbox Code Playgroud)
jQuery的
$('.call-us-options').on('change', function() {
if($(this).val()) {
alert($('.'+$(this).val()).html());
$('.'+$(this).val()).trigger('click');
}
});?
Run Code Online (Sandbox Code Playgroud)
这是JSFiddle:http://jsfiddle.net/CZ3WF/1/
有没有有效的方法来实现这一目标?
我无法通过我的iOS Cordova应用程序上的href发起呼叫和mailto.对于代码:
<a href="tel:XXX">Call</a>
Run Code Online (Sandbox Code Playgroud)
我在Xcode控制台中收到错误
There is no registered handler for URL scheme tel.
Run Code Online (Sandbox Code Playgroud)
对于mailto也是如此.怎么解决这个问题?我已将这些添加到config.xml中.
<access origin="tel:*" launch-external="yes"/>
<access origin="geo:*" launch-external="yes"/>
<access origin="mailto:*" launch-external="yes"/>
<access origin="sms:*" launch-external="yes"/>
<access origin="market:*" launch-external="yes"/>
Run Code Online (Sandbox Code Playgroud)
我正在使用Cordova v6.0.0,Xcode v7.2.1和针对iOS v9.2进行开发.