|
232 | 232 | overwriteOptions.strictUtm || |
233 | 233 | attr(scriptElement, "strict-utm") == trueText; |
234 | 234 |
|
235 | | - var getQueryParams = function (ignoreSource) { |
| 235 | + var getQueryParams = function (ignoreSource, overwriteSearch) { |
236 | 236 | return ( |
237 | | - loc.search |
| 237 | + (overwriteSearch || loc.search) |
238 | 238 | .slice(1) |
239 | 239 | .split("&") |
240 | 240 | .filter(function (keyValue) { |
|
750 | 750 | isPushState, |
751 | 751 | deleteSourceInfo, |
752 | 752 | sameSite, |
753 | | - metadata |
| 753 | + query, |
| 754 | + metadata, |
| 755 | + callback |
754 | 756 | ) { |
755 | 757 | if (isPushState) sendOnLeave("" + payload.page_id, trueVar); |
756 | 758 | if (collectDataOnLeave) payload.page_id = uuid(); |
757 | 759 |
|
758 | 760 | var currentPage = definedHostname + getPath(); |
759 | 761 |
|
760 | | - sendData({ |
761 | | - id: payload.page_id, |
762 | | - type: pageviewText, |
763 | | - referrer: !deleteSourceInfo || sameSite ? referrer : null, |
764 | | - query: getQueryParams(deleteSourceInfo), |
765 | | - |
766 | | - /** if metadata **/ |
767 | | - metadata: stringify(metadata), |
768 | | - /** endif **/ |
769 | | - }); |
| 762 | + sendData( |
| 763 | + { |
| 764 | + id: payload.page_id, |
| 765 | + type: pageviewText, |
| 766 | + referrer: !deleteSourceInfo || sameSite ? referrer : null, |
| 767 | + query: query || getQueryParams(deleteSourceInfo), |
| 768 | + |
| 769 | + /** if metadata **/ |
| 770 | + metadata: stringify(metadata), |
| 771 | + /** endif **/ |
| 772 | + }, |
| 773 | + callback |
| 774 | + ); |
770 | 775 |
|
771 | 776 | previousReferrer = referrer; |
772 | 777 | referrer = currentPage; |
|
776 | 781 |
|
777 | 782 | var sameSite, userNavigated; |
778 | 783 |
|
779 | | - var pageview = function (isPushState, pathOverwrite, metadata) { |
| 784 | + var pageview = function ( |
| 785 | + isPushState, |
| 786 | + pathOverwrite, |
| 787 | + metadata, |
| 788 | + callbackRaw |
| 789 | + ) { |
| 790 | + if (!callbackRaw && isFunction(metadata)) callbackRaw = metadata; |
| 791 | + var callback = isFunction(callbackRaw) ? callbackRaw : function () {}; |
| 792 | + var querySearch; |
| 793 | + if (isString(pathOverwrite) && pathOverwrite.indexOf("?") > -1) { |
| 794 | + // keep query from manual path |
| 795 | + var parts = pathOverwrite.split("?"); |
| 796 | + pathOverwrite = parts.shift(); |
| 797 | + querySearch = "?" + parts.join("?"); |
| 798 | + } |
780 | 799 | // Obfuscate personal data in URL by dropping the search and hash |
781 | 800 | var path = getPath(pathOverwrite); |
782 | 801 |
|
|
865 | 884 |
|
866 | 885 | var triggerSendPageView = function () { |
867 | 886 | fetchedHighEntropyValues = trueVar; |
| 887 | + var delSrc = |
| 888 | + isPushState || userNavigated || !collectMetricByString("r"); |
868 | 889 | sendPageView( |
869 | 890 | isPushState, |
870 | | - isPushState || userNavigated || !collectMetricByString("r"), // r = referrers |
| 891 | + delSrc, // r = referrers |
871 | 892 | sameSite, |
872 | | - metadata |
| 893 | + querySearch ? getQueryParams(delSrc, querySearch) : undefinedVar, |
| 894 | + metadata, |
| 895 | + callback |
873 | 896 | ); |
874 | 897 | }; |
875 | 898 |
|
|
966 | 989 | if (autoCollect) pageview(); |
967 | 990 |
|
968 | 991 | /** if metadata **/ |
969 | | - window.sa_pageview = function (path, metadata) { |
970 | | - pageview(0, path, metadata); |
| 992 | + window.sa_pageview = function (path, metadata, callback) { |
| 993 | + pageview(0, path, metadata, callback); |
971 | 994 | }; |
972 | 995 | /** else **/ |
973 | | - window.sa_pageview = function (path) { |
974 | | - pageview(0, path); |
| 996 | + window.sa_pageview = function (path, callback) { |
| 997 | + pageview(0, path, undefinedVar, callback); |
975 | 998 | }; |
976 | 999 | /** endif **/ |
977 | 1000 |
|
|
0 commit comments