+
19
-

回答

在浏览器中,无法可靠地检测用户是否是通过收藏夹(书签)打开网页的,因为:

原因:

收藏夹本质上是一个普通的 URL 访问方式;

浏览器不会告诉网页“我是从收藏夹打开的”;

出于安全与隐私考虑,浏览器不会暴露用户的来源细节,比如点击书签、输入地址栏或历史记录等。

变通方法(不完全准确):

方法 1:检查 document.referrer
console.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⚠️已废弃,不准确
添加参数引导收藏需要用户配合

如果你需要这个判断来做某些优化,可以考虑“用户行为数据采集”来间接分析,而不是直接判断“是否来自书签”。

是否需要我帮你实现一个完整的“引导用户添加书签并识别来源”的示例?

网友回复

我知道答案,我要回答