”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 即使浏览器关闭,如何可靠地跟踪用户离开网页的情况?

即使浏览器关闭,如何可靠地跟踪用户离开网页的情况?

发布于2024-11-26
浏览:939

How Can I Reliably Track User Departure from a Web Page, Even with Browser Closure?

JavaScript、浏览器和窗口关闭:跟踪用户离开

跟踪用户离开对于在用户离开之前捕获数据和执行操作至关重要一页。虽然监视导航事件相对简单,但在没有用户交互的情况下检测窗口关闭或 URL 更改构成了挑战。

捕获窗口关闭事件

Beacon API,在现代中可用浏览器,提供了解决方案。 Beacon 请求的设计目的是,即使用户突然离开页面,也能执行关键操作。

要利用 Beacon API,请使用以下代码片段:

var url = "https://example.com/foo";
var data = "bar";

navigator.sendBeacon(url, data);

旧版浏览器的替代方案

如果需要支持旧版浏览器,则visibilitychange事件提供后备。在这种情况下,从“被动”到“隐藏”的转变意味着用户即将离开。这是一个示例:

document.addEventListener('visibilitychange', function() {
  if (document.visibilityState === "hidden") {
    // Perform desired actions (e.g., send beacon request)
  }
});

可靠性和广告拦截器

Visibilitychange 已成为现代浏览器中用户退出的可靠指标。但是,广告拦截器可能会干扰信标请求,尤其是跨源或源自已知跟踪域的情况。

跨站点注意事项

信标请求是尊重的 POST 请求CORS 限制。发出跨站请求时,请确保它们满足必要的要求,以避免被浏览器阻止。

最新教程 更多>
  • Go中如何将多个返回值作为参数传递给函数?
    Go中如何将多个返回值作为参数传递给函数?
    返回值作为参数为多 - argument functions ,可以将这些值用作输入griptions的返回多个值。但是,当接收函数具有其他参数时,需要某些限制。考虑以下代码:If we attempt to pass the return values of returnIntAndStrin...
    编程 发布于2025-04-13
  • 使用Python列表解析和条件表达式替换列表元素的技巧
    使用Python列表解析和条件表达式替换列表元素的技巧
    使用理解和条件表达式替换列表元素搜索和更换列表中的元素是一个常见的编程任务。要实现这一目标,请利用列表理解的力量以及有条件的表达方式。将整数列表作为一个示例: 在此表达式中,我们在列表中的每个元素x迭代。如果x等于1,则将其替换为4;否则,它保持不变。结果是一个新列表,所有1次替换为4s: [4、...
    编程 发布于2025-04-13
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案: args)抛出异常{ 日历cal = calendar.getInstance(); SimpleDateFormat SDF =新的SimpleDateFormat(“...
    编程 发布于2025-04-13
  • 如何将MySQL数据库添加到Visual Studio 2012中的数据源对话框中?
    如何将MySQL数据库添加到Visual Studio 2012中的数据源对话框中?
    在Visual Studio 2012 尽管已安装了MySQL Connector v.6.5.4,但无法将MySQL数据库添加到实体框架的“ DataSource对话框”中。为了解决这一问题,至关重要的是要了解MySQL连接器v.6.5.5及以后的6.6.x版本将提供MySQL的官方Visual...
    编程 发布于2025-04-13
  • 拥抱逻辑CSS与Fugu API,WordPress对抗斜体
    拥抱逻辑CSS与Fugu API,WordPress对抗斜体
    [2 2021标志着向更广泛采用CSS逻辑属性的重大转变! 最近的Chrome API发行引发了争论,SVG的长宽比控制提供了新的灵活性,WordPress优先列出了可访问的排版,并且CSS自定义媒体查询的开发仍然停滞不前。让我们深入研究细节。 在Mozilla最初实施六年后,CSS逻辑属性在2...
    编程 发布于2025-04-13
  • 如何使用“ JSON”软件包解析JSON阵列?
    如何使用“ JSON”软件包解析JSON阵列?
    parsing JSON与JSON软件包 QUALDALS:考虑以下go代码:字符串 } func main(){ datajson:=`[“ 1”,“ 2”,“ 3”]`` arr:= jsontype {} 摘要:= = json.unmarshal([] byte(...
    编程 发布于2025-04-13
  • Java高效解析逗号分隔的双精度数方法
    Java高效解析逗号分隔的双精度数方法
    在Java中使用逗号小数分隔仪对双解析,使用默认的numberFormat在用逗号作为小数小数分离器解析字符串时可能会导致错误。考虑以下代码:字符串p =“ 1,234”; double d = double.valueof(p); system.out.println(d); 此代码将抛出一个...
    编程 发布于2025-04-13
  • 如何配置Pytesseract以使用数字输出的单位数字识别?
    如何配置Pytesseract以使用数字输出的单位数字识别?
    Pytesseract OCR具有单位数字识别和仅数字约束 在pytesseract的上下文中,在配置tesseract以识别单位数字和限制单个数字和限制输出对数字可能会提出质疑。 To address this issue, we delve into the specifics of Te...
    编程 发布于2025-04-13
  • 为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    在Microsoft Visual C 中,Microsoft consions用户strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate st...
    编程 发布于2025-04-13
  • 如何检查对象是否具有Python中的特定属性?
    如何检查对象是否具有Python中的特定属性?
    方法来确定对象属性存在寻求一种方法来验证对象中特定属性的存在。考虑以下示例,其中尝试访问不确定属性会引起错误: >>> a = someClass() >>> A.property Trackback(最近的最新电话): 文件“ ”,第1行, attributeError:SomeClass实...
    编程 发布于2025-04-13
  • 如何将PANDAS DataFrame列转换为DateTime格式并按日期过滤?
    如何将PANDAS DataFrame列转换为DateTime格式并按日期过滤?
    Transform Pandas DataFrame Column to DateTime FormatScenario:Data within a Pandas DataFrame often exists in various formats, including strings.使用时间数据时...
    编程 发布于2025-04-13
  • MySQL产品可见性:CASE vs. IF ELSEIF哪个更好?
    MySQL产品可见性:CASE vs. IF ELSEIF哪个更好?
    mySQL选择语句或elseif:选择正确的选项:选择正确的选项确定基于制造商设置的产品的可见性,mysql提供两个选项:case语句或elseif语句。了解这两种方法之间的差异对于选择最佳解决方案至关重要。案例语句评估多个条件并基于第一个匹配条件返回相应的值。在这种情况下,条件是产品状态(新或...
    编程 发布于2025-04-13
  • 您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    在javascript console 中显示颜色是可以使用chrome的控制台显示彩色文本,例如红色的redors,for for for for错误消息?回答是的,可以使用CSS将颜色添加到Chrome和Firefox中的控制台显示的消息(版本31或更高版本)中。要实现这一目标,请使用以下模...
    编程 发布于2025-04-13
  • 哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    在Python Matplotlib's path.contains_points FunctionMatplotlib's path.contains_points function employs a path object to represent the polygon.它...
    编程 发布于2025-04-13
  • 解决Python 3压缩文本时TypeError:'str'不支持缓冲区接口
    解决Python 3压缩文本时TypeError:'str'不支持缓冲区接口
    在python3中,字符串与python2中的字符串并不相同,因此需要使用字节()函数。此外,考虑避免使用“字符串”或“文件”之类的可变名称,因为它们已经定义为函数或模块。进行全面的文本压缩,包括非ASCII字符,所提供的代码使用UTF-8编码来确保波兰字母的完整性。 文件名='foo.g...
    编程 发布于2025-04-13

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3