最近在做一个Cordova的项目,之前有没有说过…… 无所谓了,我在里面的发短信和打电话都简单的使用了tel:和sms:的链接值,有没有人不知道?就是这样的:
<a href="tel:12312312123">打电话</a>
<a href="sms:12312312123">发短信</a>
手机上的浏览器看到这样的链接,就会自动调出短信和拨号的界面啦,其实很早之前的mailto:,也是类似这样的东西。
不过在cordova中,光这样写是不行的,你还要在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"/>
据说来自IBM对Cordova的贡献,有够会来事儿啊:)
但是即便如此,我发现还是不行,为啥呢,经过旷日持久的debug后,发现生产的代码发现居然是<a href="unsafe:sms:12312312123">xxx</a>
,为啥,unsafe是什么鬼?
angularJS新手表示压力很大,请教google大神后,有善良的叔叔拯救了我,原来angular对href是有安全检查的,只能生成它认为安全的链接。AngularJS真是为我们的安全操碎了心……而我也更加明白了{{}}并不是一个简单的模板替换,它真的把我们的html重新编译了一遍!
解决方法如下~
angular.module('app').config( [
'$compileProvider',
function( $compileProvider )
{
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|file|sms):/);
// Angular v1.2 之前使用 $compileProvider.urlSanitizationWhitelist(...)
}
]);
灰常感谢!!!
找了一下午 就这篇blog好用, 感谢分享
哎哟我去 感谢大婶呀!刚好项目也遇到这个问题,顺便说下 如果 a标签的href 里头 填写 javascript: void(0),辣么在白名单上添加这个就行了, 填写javascript:; 是无效的
javascript: void(0) 是怎么写的? |ftp|mailto|tel|file|sms|javascript不行吗
没试过,应该直接在ng-click中return false?
人人
东哥