|
1 | | -/* Simple Analytics - Privacy friendly analytics (docs.simpleanalytics.com/script; 2022-11-22; cdfd; v11) */ |
| 1 | +/* Simple Analytics - Privacy friendly analytics (docs.simpleanalytics.com/script; 2023-05-01; fab4; v11) */ |
2 | 2 | /* eslint-env browser */ |
3 | 3 |
|
4 | 4 | (function ( |
|
59 | 59 | var platformText = "platform"; |
60 | 60 | var platformVersionText = "platformVersion"; |
61 | 61 | var docsUrl = "https://docs.simpleanalytics.com"; |
| 62 | + var pages = 0; |
62 | 63 | var isBotAgent = |
63 | 64 | /(bot|spider|crawl)/i.test(userAgent) && !/(cubot)/i.test(userAgent); |
64 | 65 | var screen = window.screen; |
|
287 | 288 | data = onlyThisData ? data : assign(payload, page, data); |
288 | 289 |
|
289 | 290 | if (nav.brave && !onlyThisData) data.brave = trueVar; |
| 291 | + if (nav._duckduckgoloader_ && !onlyThisData) data.duck = trueVar; |
290 | 292 |
|
291 | 293 |
|
292 | 294 | var image = new Image(); |
|
439 | 441 | window.phantom || |
440 | 442 | window.__polypane || |
441 | 443 | window._bot || |
442 | | - isBotAgent; |
| 444 | + isBotAgent || |
| 445 | + Math.random() == Math.random(); |
443 | 446 |
|
444 | 447 | // t = timeonpage, scro = scrolled |
445 | 448 | var collectDataOnLeave = |
|
508 | 511 | var page = {}; |
509 | 512 | var lastSendPath; |
510 | 513 |
|
| 514 | + var getReferrer = function () { |
| 515 | + return ( |
| 516 | + (doc.referrer || "") |
| 517 | + .replace(locationHostname, definedHostname) |
| 518 | + .replace(/^https?:\/\/((m|l|w{2,3}([0-9]+)?)\.)?([^?#]+)(.*)$/, "$4") |
| 519 | + .replace(/^([^/]+)$/, "$1") || undefinedVar |
| 520 | + ); |
| 521 | + }; |
| 522 | + |
511 | 523 | // We don't want to end up with sensitive data so we clean the referrer URL |
512 | | - var referrer = |
513 | | - (doc.referrer || "") |
514 | | - .replace(locationHostname, definedHostname) |
515 | | - .replace(/^https?:\/\/((m|l|w{2,3}([0-9]+)?)\.)?([^?#]+)(.*)$/, "$4") |
516 | | - .replace(/^([^/]+)$/, "$1") || undefinedVar; |
| 524 | + var referrer = getReferrer(); |
517 | 525 |
|
518 | 526 | ///////////////////// |
519 | 527 | // TIME ON PAGE AND SCROLLED LOGIC |
|
636 | 644 | return path; |
637 | 645 | }; |
638 | 646 |
|
| 647 | + var previousReferrer; |
| 648 | + |
639 | 649 | // Send page view and append data to it |
640 | 650 | var sendPageView = function ( |
641 | 651 | isPushState, |
|
657 | 667 | metadata: stringify(metadata), |
658 | 668 | }); |
659 | 669 |
|
| 670 | + previousReferrer = referrer; |
660 | 671 | referrer = currentPage; |
| 672 | + |
| 673 | + pages++; |
661 | 674 | }; |
662 | 675 |
|
| 676 | + var sameSite, userNavigated; |
| 677 | + |
663 | 678 | var pageview = function (isPushState, pathOverwrite, metadata) { |
664 | 679 | // Obfuscate personal data in URL by dropping the search and hash |
665 | 680 | var path = getPath(pathOverwrite); |
|
705 | 720 | warn(error); |
706 | 721 | } |
707 | 722 |
|
708 | | - var userNavigated = performaceEntryType |
| 723 | + userNavigated = performaceEntryType |
709 | 724 | ? ["reload", "back_forward"].indexOf(performaceEntryType) > -1 |
710 | 725 | : // Check if back, forward or reload buttons are being use in older browsers |
711 | 726 | // 1: TYPE_RELOAD, 2: TYPE_BACK_FORWARD |
|
714 | 729 | [1, 2].indexOf(perf[navigationText].type) > -1; |
715 | 730 |
|
716 | 731 | // Check if referrer is the same as current real hostname (not the defined hostname!) |
717 | | - var currentReferrerHostname = doc.referrer.split(slash)[2]; |
718 | | - var sameSite = referrer |
| 732 | + var currentReferrerHostname = referrer |
| 733 | + ? referrer.split(slash)[0] |
| 734 | + : undefinedVar; |
| 735 | + sameSite = referrer |
719 | 736 | ? nonUniqueHostnames.indexOf(currentReferrerHostname) > -1 || |
720 | 737 | currentReferrerHostname == locationHostname |
721 | 738 | : falseVar; |
|
868 | 885 | event = ("" + event).replace(/[^a-z0-9]+/gi, "_").replace(/(^_|_$)/g, ""); |
869 | 886 |
|
870 | 887 | var eventParams = { type: eventText, event: event }; |
| 888 | + var firstPage = !userNavigated && pages < 2; |
871 | 889 |
|
872 | 890 | metadata = appendMetadata(metadata, eventParams); |
873 | 891 |
|
874 | 892 | if (event) { |
875 | 893 | sendData( |
876 | 894 | assign(eventParams, { |
877 | | - query: getQueryParams(), |
| 895 | + query: getQueryParams(!firstPage), |
| 896 | + referrer: |
| 897 | + (firstPage || sameSite) && collectMetricByString("r") |
| 898 | + ? previousReferrer |
| 899 | + : null, |
878 | 900 |
|
879 | 901 | metadata: stringify(metadata), |
880 | 902 | }), |
|
0 commit comments