|
60 | 60 | var platformText = "platform"; |
61 | 61 | var platformVersionText = "platformVersion"; |
62 | 62 | var docsUrl = "https://docs.simpleanalytics.com"; |
| 63 | + var pages = 0; |
63 | 64 | var isBotAgent = |
64 | 65 | /(bot|spider|crawl)/i.test(userAgent) && !/(cubot)/i.test(userAgent); |
65 | 66 | /** if screen **/ |
|
582 | 583 | var page = {}; |
583 | 584 | var lastSendPath; |
584 | 585 |
|
| 586 | + var getReferrer = function () { |
| 587 | + return ( |
| 588 | + (doc.referrer || "") |
| 589 | + .replace(locationHostname, definedHostname) |
| 590 | + .replace(/^https?:\/\/((m|l|w{2,3}([0-9]+)?)\.)?([^?#]+)(.*)$/, "$4") |
| 591 | + .replace(/^([^/]+)$/, "$1") || undefinedVar |
| 592 | + ); |
| 593 | + }; |
| 594 | + |
585 | 595 | // We don't want to end up with sensitive data so we clean the referrer URL |
586 | | - var referrer = |
587 | | - (doc.referrer || "") |
588 | | - .replace(locationHostname, definedHostname) |
589 | | - .replace(/^https?:\/\/((m|l|w{2,3}([0-9]+)?)\.)?([^?#]+)(.*)$/, "$4") |
590 | | - .replace(/^([^/]+)$/, "$1") || undefinedVar; |
| 596 | + var referrer = getReferrer(); |
591 | 597 |
|
592 | 598 | ///////////////////// |
593 | 599 | // TIME ON PAGE AND SCROLLED LOGIC |
|
724 | 730 | return path; |
725 | 731 | }; |
726 | 732 |
|
| 733 | + var previousReferrer; |
| 734 | + |
727 | 735 | // Send page view and append data to it |
728 | 736 | var sendPageView = function ( |
729 | 737 | isPushState, |
|
747 | 755 | /** endif **/ |
748 | 756 | }); |
749 | 757 |
|
| 758 | + previousReferrer = referrer; |
750 | 759 | referrer = currentPage; |
| 760 | + |
| 761 | + pages++; |
751 | 762 | }; |
752 | 763 |
|
| 764 | + var sameSite, userNavigated; |
| 765 | + |
753 | 766 | var pageview = function (isPushState, pathOverwrite, metadata) { |
754 | 767 | // Obfuscate personal data in URL by dropping the search and hash |
755 | 768 | var path = getPath(pathOverwrite); |
|
799 | 812 | warn(error); |
800 | 813 | } |
801 | 814 |
|
802 | | - var userNavigated = performaceEntryType |
| 815 | + userNavigated = performaceEntryType |
803 | 816 | ? ["reload", "back_forward"].indexOf(performaceEntryType) > -1 |
804 | 817 | : // Check if back, forward or reload buttons are being use in older browsers |
805 | 818 | // 1: TYPE_RELOAD, 2: TYPE_BACK_FORWARD |
|
809 | 822 |
|
810 | 823 | // Check if referrer is the same as current real hostname (not the defined hostname!) |
811 | 824 | /** if nonuniquehostnames **/ |
812 | | - var currentReferrerHostname = doc.referrer.split(slash)[2]; |
813 | | - var sameSite = referrer |
| 825 | + var currentReferrerHostname = referrer |
| 826 | + ? referrer.split(slash)[0] |
| 827 | + : undefinedVar; |
| 828 | + sameSite = referrer |
814 | 829 | ? nonUniqueHostnames.indexOf(currentReferrerHostname) > -1 || |
815 | 830 | currentReferrerHostname == locationHostname |
816 | 831 | : falseVar; |
817 | 832 | /** else **/ |
818 | | - var sameSite = referrer |
819 | | - ? doc.referrer.split(slash)[2] == locationHostname |
| 833 | + sameSite = referrer |
| 834 | + ? referrer.split(slash)[0] == locationHostname |
820 | 835 | : falseVar; |
821 | 836 | /** endif **/ |
822 | 837 |
|
|
987 | 1002 | event = ("" + event).replace(/[^a-z0-9]+/gi, "_").replace(/(^_|_$)/g, ""); |
988 | 1003 |
|
989 | 1004 | var eventParams = { type: eventText, event: event }; |
| 1005 | + var firstPage = !userNavigated && pages < 2; |
990 | 1006 |
|
991 | 1007 | /** if metadata **/ |
992 | 1008 | metadata = appendMetadata(metadata, eventParams); |
|
995 | 1011 | if (event) { |
996 | 1012 | sendData( |
997 | 1013 | assign(eventParams, { |
998 | | - query: getQueryParams(), |
| 1014 | + query: getQueryParams(!firstPage), |
| 1015 | + referrer: |
| 1016 | + (firstPage || sameSite) && collectMetricByString("r") |
| 1017 | + ? previousReferrer |
| 1018 | + : null, |
999 | 1019 |
|
1000 | 1020 | /** if metadata **/ |
1001 | 1021 | metadata: stringify(metadata), |
|
0 commit comments