Skip to content

Commit 0cff8ec

Browse files
fix visibilityState not being visible for webview based browsers on load
1 parent 3f1eb11 commit 0cff8ec

3 files changed

Lines changed: 28 additions & 603 deletions

File tree

assets/js/script.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/js/src/script.js

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
const ka = window.koko_analytics;
2+
let tracked = false;
23

34
ka.trackPageview = function(path, post_id) {
45
if (
@@ -25,14 +26,29 @@ ka.trackPageview = function(path, post_id) {
2526
}));
2627
};
2728

28-
// autotrack pageview on page load, but only if the page is visible (e.g. not in a background tab)
29-
// we also track if the page becomes visible later (e.g. user switches to the tab), but only once per page load
30-
let autotracked = false;
31-
const autotrack = () => {
32-
if (! autotracked && document.visibilityState === 'visible') {
33-
ka.trackPageview(ka.path, ka.post_id);
34-
autotracked = true;
35-
}
29+
function trackCurrentPageview() {
30+
tracked = true;
31+
ka.trackPageview(ka.path, ka.post_id);
32+
}
33+
34+
if (
35+
document.visibilityState === 'hidden' ||
36+
document.visibilityState === 'prerender'
37+
) {
38+
// Track page as soon as it becomes visible
39+
document.addEventListener('visibilitychange', () => {
40+
if (!tracked && document.visibilityState === 'visible') {
41+
trackCurrentPageview();
42+
}
43+
});
44+
} else {
45+
// Otherwise, track page right away
46+
trackCurrentPageview();
3647
}
37-
document.addEventListener("visibilitychange", autotrack);
38-
window.addEventListener('load',autotrack);
48+
49+
// Track pageviews for pages restored from bfcache
50+
window.addEventListener('pageshow', (evt) => {
51+
if (evt.persisted) {
52+
trackCurrentPageview();
53+
}
54+
});

0 commit comments

Comments
 (0)