|
1 | | -/* Simple Analytics - Privacy-first analytics (docs.simpleanalytics.com/script; 2025-05-30; 8325; v12) */ |
| 1 | +/* Simple Analytics - Privacy-first analytics (docs.simpleanalytics.com/script; 2025-06-13; a5d8; v12) */ |
2 | 2 | /* eslint-env browser */ |
3 | 3 |
|
4 | 4 | (function ( |
|
216 | 216 | overwriteOptions.strictUtm || |
217 | 217 | attr(scriptElement, "strict-utm") == trueText; |
218 | 218 |
|
219 | | - var getQueryParams = function (ignoreSource) { |
| 219 | + var getQueryParams = function (ignoreSource, overwriteSearch) { |
220 | 220 | return ( |
221 | | - loc.search |
| 221 | + (overwriteSearch || loc.search) |
222 | 222 | .slice(1) |
223 | 223 | .split("&") |
224 | 224 | .filter(function (keyValue) { |
|
560 | 560 | sendData(append, undefinedVar, trueVar); |
561 | 561 | } else { |
562 | 562 | try { |
563 | | - nav.sendBeacon |
564 | | - .bind(nav)(fullApiUrl + "/append", stringify(append)); |
| 563 | + nav.sendBeacon.bind(nav)(fullApiUrl + "/append", stringify(append)); |
565 | 564 | } catch (e) { |
566 | 565 | // Fallback for browsers throwing "Illegal invocation" when the URL is invalid |
567 | 566 | sendData(append, undefinedVar, trueVar); |
|
662 | 661 | isPushState, |
663 | 662 | deleteSourceInfo, |
664 | 663 | sameSite, |
| 664 | + query, |
665 | 665 | metadata, |
666 | 666 | callback |
667 | 667 | ) { |
|
675 | 675 | id: payload.page_id, |
676 | 676 | type: pageviewText, |
677 | 677 | referrer: !deleteSourceInfo || sameSite ? referrer : null, |
678 | | - query: getQueryParams(deleteSourceInfo), |
| 678 | + query: query || getQueryParams(deleteSourceInfo), |
679 | 679 |
|
680 | 680 | metadata: stringify(metadata), |
681 | 681 | }, |
|
698 | 698 | ) { |
699 | 699 | if (!callbackRaw && isFunction(metadata)) callbackRaw = metadata; |
700 | 700 | var callback = isFunction(callbackRaw) ? callbackRaw : function () {}; |
| 701 | + var querySearch; |
| 702 | + if (isString(pathOverwrite) && pathOverwrite.indexOf("?") > -1) { |
| 703 | + // keep query from manual path |
| 704 | + var parts = pathOverwrite.split("?"); |
| 705 | + pathOverwrite = parts.shift(); |
| 706 | + querySearch = "?" + parts.join("?"); |
| 707 | + } |
701 | 708 | // Obfuscate personal data in URL by dropping the search and hash |
702 | 709 | var path = getPath(pathOverwrite); |
703 | 710 |
|
|
772 | 779 |
|
773 | 780 | var triggerSendPageView = function () { |
774 | 781 | fetchedHighEntropyValues = trueVar; |
| 782 | + var delSrc = |
| 783 | + isPushState || userNavigated || !collectMetricByString("r"); |
775 | 784 | sendPageView( |
776 | 785 | isPushState, |
777 | | - isPushState || userNavigated || !collectMetricByString("r"), // r = referrers |
| 786 | + delSrc, // r = referrers |
778 | 787 | sameSite, |
| 788 | + querySearch ? getQueryParams(delSrc, querySearch) : undefinedVar, |
779 | 789 | metadata, |
780 | 790 | callback |
781 | 791 | ); |
|
0 commit comments