在浏览器中,无法可靠地检测用户是否是通过收藏夹(书签)打开网页的,因为:
原因:
收藏夹本质上是一个普通的 URL 访问方式;
浏览器不会告诉网页“我是从收藏夹打开的”;
出于安全与隐私考虑,浏览器不会暴露用户的来源细节,比如点击书签、输入地址栏或历史记录等。
变通方法(不完全准确):
方法 1:检查 document.referrerconsole.log(document.referrer); // 可能为空
如果 document.referrer === "",说明用户不是从其他页面跳转过来的,但这也可能是:
直接输入地址栏访问;
点击书签;
浏览器主页;
重启浏览器后恢复页面。
所以这不能唯一判断是“从收藏夹”打开。
方法 2:结合 performance.navigation.type(旧 API,不推荐)if (performance.navigation.type === 0) { console.log("用户可能是直接访问(地址栏/书签)"); }
但这个 API 已废弃,取而代之的是 PerformanceNavigationTiming,但仍然无法准确识别是否从书签打开。
可能的策略(前端+后端):
如果你非常想“区别是否是从收藏夹打开”,可以考虑引导用户添加书签时,在 URL 上添加参数:
// 你在提示用户收藏时,引导他保存这个链接: https://yourdomain.com/?from=bookmark
然后通过脚本识别这个参数:
const urlParams = new URLSearchParams(window.location.search); if (urlParams.get("from") === "bookmark") { console.log("用户是通过收藏夹打开的(推测)"); }
这种方式不是自动检测,而是“控制用户收藏的链接”。
总结:
document.referrer | ✅ | ❌ | 空值来源太多,不能断言 |
performance.navigation | ⚠️ | ❌ | 已废弃,不准确 |
添加参数引导收藏 | ✅ | ✅ | 需要用户配合 |
如果你需要这个判断来做某些优化,可以考虑“用户行为数据采集”来间接分析,而不是直接判断“是否来自书签”。
是否需要我帮你实现一个完整的“引导用户添加书签并识别来源”的示例?
网友回复
DLNA与UPnP的区别和不同?
苏超自建抢票app,通过先预约再抽签化解高并发抢票?
python如何让给电脑在局域网中伪装成电视接收手机的投屏图片视频播放?
如何结合python+js如何自己的视频编码与加密播放直播?
python如何在电脑上通过局域网将本地视频或m3u8视频投屏电视播放?
腾讯视频爱奇艺优酷vip电影电视剧视频如何通过python绕过vip收费直接观看?
有没有可免费观看全球电视台直播m3u8地址url的合集?
有没有实现观影自由的免vip影视苹果 CMS V10 API的可用url?
python如何实时检测电脑usb插入检测报警?
如何判断真人操作的鼠标移动直线轨迹与机器操作的轨迹?