1,拨打电话
<!-- 直接拨打电话 -->
<a href="tel:12345678910">拨打 12345678910</a>
<!-- JS 动态调用 -->
<button onclick="location.href='tel:12345678910'">拨打电话</button>
兼容性:所有主流浏览器均支持。
注意:在 iOS 中,点击后会直接跳转到拨号界面;在 Android 中,部分设备可能会弹出确认框。
2,发送短信
<!-- Android:直接指定号码和内容 -->
<a href="sms:12345678910?body=你好,这是测试内容">发送短信(Android)</a>
<!-- iOS:使用 addresses 参数指定多个号码 -->
<a href="sms:/open?addresses=12345678910&body=你好">发送短信(iOS)</a>
<!-- 通用方案:不指定系统,由浏览器自动处理 -->
<a href="sms:12345678910,12345678911?body=你好">发送短信(通用)</a>
兼容性:Android 和 iOS 均支持基本的 sms: 协议,但参数格式可能不同。
注意:iOS 中 addresses 参数需配合 /open 路径使用,多个号码用逗号分隔。
3,打开微信
<!-- 尝试唤起微信 -->
<a href="weixin://">打开微信</a>
<!-- 打开微信公众号或小程序 -->
<a href="weixin://dl/business/?t=your_business_id">打开微信公众号</a>
<a href="weixin://dl/miniprogram/?appid=wx1234567890">打开微信小程序</a>
兼容性:仅在已安装微信的设备上有效,且需用户授权。
注意:iOS 和 Android 均支持 weixin:// 协议,但部分浏览器(如 Safari)可能限制非 HTTP/HTTPS 协议的跳转。
4,
<a href="alipay://">打开支付宝</a>
<!-- 打开地图导航 -->
<a href="baidumap://map/direction?destination=北京">百度地图导航</a>
<a href="amapuri://route/plan/?dname=北京">高德地图导航</a>
<!-- 打开 App Store 或 Google Play -->
<a href="itms-apps://itunes.apple.com/cn/app/id1234567890">App Store</a>
<a href="market://details?id=com.example.app">Google Play</a>打开其它应用
兼容性:需设备已安装对应应用,否则可能无反应或跳转到应用商店。
注意:自定义协议(如 weixin://、alipay://)可能被浏览器拦截,需结合 iframe 或 JS 检测方案。
- 兼容性处理与用户提示
为避免用户点击无反应,可以结合 JS 检测应用是否成功唤起,并提供备选方案:
function openApp(url, fallbackUrl) {
const startTime = Date.now();
const timeout = 2500; // 2.5秒后判断是否唤起失败
// 尝试唤起应用
location.href = url;
// 设置定时器检测是否切换到后台
const timer = setTimeout(() => {
const endTime = Date.now();
if (endTime - startTime < timeout + 500) {
// 未唤起应用,跳转到备用页面(如应用商店)
if (fallbackUrl) location.href = fallbackUrl;
}
}, timeout);
// 监听页面隐藏事件(用户切换到其他应用)
document.addEventListener('visibilitychange', function handler() {
if (document.hidden) {
clearTimeout(timer);
document.removeEventListener('visibilitychange', handler);
}
});
}
// 使用示例:打开微信,失败则跳转到应用商店
openApp('weixin://', 'https://apps.apple.com/cn/app/微信/id414478124');
1.协议安全限制:现代浏览器对非 HTTP/HTTPS 协议的跳转越来越严格,可能会被拦截或提示用户确认。
2.iOS 10+ 限制:iOS 10 及以上版本要求使用 universal links 或 smart app banners 来唤起应用。
3.用户体验:过度使用强制跳转可能导致用户反感,建议仅在必要场景使用,并提供明确的操作指引。
通过合理组合协议跳转和 JS 检测,可以在移动端实现相对流畅的应用间跳转体验。