“href:tel”链接不会在 IOS 中打开警报视图

Posted

技术标签:

【中文标题】“href:tel”链接不会在 IOS 中打开警报视图【英文标题】:"href:tel" link doesn't open alert view in IOS 【发布时间】:2017-05-26 15:30:06 【问题描述】:

我正在基于 Cordova 平台并使用 ExtJS 框架为不同平台构建一个 Web 应用程序。目前我正在尝试使用 href="tel:0123456789" 链接电话号码,它在 android 和 Window 上运行良好。

但是,当我在ios中点击电话链接时,它并没有显示默认警报,而是在没有提示的情况下启动拨号。这真的很奇怪,因为即使在Apple的URL Scheme Reference中也是这样说的:

当用户点击网页中的电话链接时,iOS 会显示一条警报,询问用户是否真的要拨打该电话号码,如果用户接受,则开始拨号。

我试过了:

•删除 html 中的锚标记并让 Safari 自动链接电话号码。 - 它确实成功地锚定了页面上的所有数字,但是当我再次点击它们时,它会立即呼叫而没有警报确认。

•使用 onclick="window.location.href = phonenumber" - 电话号码甚至没有关联。

•使用“telprompt”代替“tel” - Apple 不再支持“telprompt”

我在 Iphone 6 和 5 上进行了测试,结果相同。

那么如何让IOS在调用'href=tel:'标签之前显示确认提示呢?

【问题讨论】:

【参考方案1】:

在 config.xml 中:

<allow-intent href="tel:*" />

在html中:

<a href="tel:1-xxx-xxx-xxxx">1-xxx-xxx-xxxx</a>

【讨论】:

感谢您的回复,但不幸的是它仍然在没有确认警报的情况下打电话。【参考方案2】:

好的,我终于找到了解决方案... 基本上除了HristoEftimov 和Steve 的答案之外,我还需要在我的config.xml 中包含&lt;allow-navigation href="tel:*" /&gt;

但是,这会破坏 Android 的代码,所以我必须只为 ios 实现它。所以&lt;platform name="ios"&gt;&lt;allow-intent href="tel:*" /&gt;&lt;allow-navigation href="tel:*" /&gt;&lt;/platform&gt;

此外,我必须从 onclick 事件中调用电话链接:&lt;a onclick=" onPhoneNumberClick(' + arrayPhoneNumbers[i] + ')" href="javascript:void(0);"&gt;

调用方法 onPhoneNumberClick,我在 window.open 中打开链接如下:window.open("tel:"+number);

【讨论】:

以上是关于“href:tel”链接不会在 IOS 中打开警报视图的主要内容,如果未能解决你的问题,请参考以下文章

在IOS中显示警报时,键盘不会从View中退出

href=tel:555 链接在移动 Safari 中不起作用

jquery show not working with href tel 点击android chrome

UI警报表视图在ios7中不起作用

在 iOS 8 中获取用户位置警报不会留在屏幕上

如何在 iOS 中触发通知时打开警报视图?