gpt4 book ai didi

javascript - 在 Application Insights 中使用 startTrackPage

转载 作者:行者123 更新时间:2023-11-30 16:54:00 27 4
gpt4 key购买 nike

我最近一直在摆弄 Application Insights,并且在让 JavaScript API 正常工作时遇到了问题。在您应该添加到页面的默认脚本中,它们使用函数 trackPageView()。这似乎有效,但我还想收集有关用户在页面上停留多长时间的信息。我找到了 startTrackPage() 和 stopTrackPage() 函数,并尝试使用它们来获取信息,但我总是收到来自 startTrackPage() 的错误。

未捕获的类型错误:appInsights.startTrackPage不是函数(匿名函数)

我已经单步执行了代码,但在我调用它时该函数似乎尚未创建。 trackPageView() 已经定义了。我也尝试在文档加载后调用该函数,但仍然失败。但是,页面加载后我可以从开发人员控制台调用它。

Here是我最初找到有关 startTrackPage() 和 stopTrackPage() 的信息的地方。除此之外,我只是仔细阅读了一下,看看是否有其他人遇到过这个问题。

非常感谢您的帮助。

App Insight 的默认代码:

window.appInsights = appInsights;
appInsights.startPageView();

我尝试过的:

window.appInsights = appInsights;
appInsights.startTrackPage();

window.onunload = function () {
appInsights.stopTrackPage();
};

最佳答案

简短回答:遗憾的是,目前无法按照您想要的方式可靠地使用 appInsights.startTrackPage()。

长答案:原因是startTrackPage()方法只在从CDN下载的JS中定义,所以在下载之前它是没有定义的。你可以这样做:

appInsights.queue.push(function(){appInsights.startTrackPage();})

但是,这不会产生正确的测量,因为跟踪不会立即开始。因此,您最好的方法是手动记录开始时间,但即使这样您也无法可靠地做到这一点。首先,您绝对不想使用 onunload 事件,因为此时 Application Insights SDK 发送数据为时已晚,因此很可能会丢失。使用onbeforeunload和flush()将有助于解决这个问题:

var pageStart =  +new Date;
window.addEventListener("beforeunload", function () {
appInsights.trackMetric("timeOnPage", (+new Date)-pageStart);
appInsights.flush();
});

但是,即使使用 onbeforeunload,您也会发现大量潜在数据丢失 - 您无法保证将数据发送到 Application Insights 的 ajax 请求将在页面导航离开和连接中断之前完成。在我对 IE 的测试中,损失大约为 50%。

关于javascript - 在 Application Insights 中使用 startTrackPage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30058310/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com