tencent://message 是最可靠的 QQ 客户端唤起协议,仅支持已登录的 Windows/macOS 版 QQ;需严格校验 UIN 格式、禁用 target="_blank" 和 rel 属性,移动端须降级为网页链接并 UA 检测。

用 tencent://message 协议直接唤起 QQ 客户端
只要用户本地装了 Windows 或 macOS 版 QQ(且已登录),tencent://message 是最可靠、无需后端、不依赖网页授权的跳转方式。它不是超链接跳转,而是协议唤起——类似 mailto: 或 tel:。
常见错误是写成 https://wpa.qq.com/... 或 https://qun.qq.com/...,这些是网页版入口,会跳转到 QQ 群页面或提示“请使用 QQ 客户端”,无法直达聊天窗口。
-
tencent://message/?uin=123456789&Site=&Menu=yes:最简可用形式,uin必须是纯数字 QQ 号 - 参数中不要加空格、中文或 URL 编码后的特殊字符(如
%E4%BD%A0),否则客户端可能解析失败 -
Menu=yes表示唤起后显示菜单栏(推荐保留),Site可留空,但不能省略= - 移动端(Android/iOS)基本不支持该协议,点击无反应,需单独 fallback
给链接加 target="_blank" 会导致失败
很多开发者习惯给所有外链加 target="_blank" 防止页面跳失,但对 tencent:// 协议无效,反而可能触发浏览器拦截或静默失败——因为这不是 HTTP 资源,也不产生新页面。
- 必须用原生
,不加target属性 - 如果加了
rel="noopener"或rel="noreferrer",QQ 协议同样无法唤起 - 用 JavaScript 的
window.open()调用该协议也大概率被浏览器阻止(尤其 Chrome)
如何兼容手机端用户?
安卓和 iOS 均不识别 tencent://message,但可以降级为网页版 QQ 聊天链接(仅限个人号,且需对方开启「允许陌生人消息」):
- 网页版地址格式:
https://wpa.qq.com/msgrd?v=3&uin=123456789&site=qq&menu=yes - 注意:该链接在桌面端 Chrome/Firefox 中会跳转到网页聊天页(非客户端),体验较差;在手机 Safari/微信内嵌浏览器中可能提示“在 QQ 中打开”,但实际仍需用户手动切换 App
- 更稳妥的做法是检测 UA:
navigator.userAgent.includes('Mobile'),是则渲染网页版链接,否则渲染tencent://协议链接 - 不要指望「自动唤起 QQ + 自动跳转网页版」双保险——没有通用 JS API 能判断 QQ 是否已安装并唤起成功
调试时看不到任何报错?这是正常现象
tencent:// 协议唤起失败时,浏览器不会抛异常、不打印 console 错误、也不跳 404,表现就是“点下去没反应”。这正是最容易卡住人的地方。
- 先确认本地 QQ 已登录且在线(最小化状态即可,无需前台)
- 复制完整链接(含
tencent://)粘贴到 Windows 地址栏回车,能唤起即说明协议本身有效 - 检查 HTML 中是否意外多写了空格,比如
href=" tencent://..."(开头空格会让协议失效) - 禁用广告屏蔽插件(如 uBlock Origin),某些规则会拦截协议类链接
真正难处理的不是怎么写,而是怎么验证它在别人电脑上也能工作——尤其是企业内网环境,QQ 可能被策略限制唤起,这时候协议就彻底失效,只能换联系方式。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











