@@ -4,19 +4,25 @@ import { getWindowTop, logError, getWindowLocation, getWindowSelf } from '../../
44 * Determines if the script is running inside an iframe and retrieves the URL.
55 * @return {string } The encoded vrref value representing the relevant URL.
66 */
7- export function getReferrer ( ) {
7+
8+ export function getCurrentUrl ( ) {
9+ let url = '' ;
810 try {
9- const url = getWindowSelf ( ) === getWindowTop ( )
10- ? getWindowLocation ( ) . href
11- : getWindowTop ( ) . location . href ;
11+ if ( getWindowSelf ( ) === getWindowTop ( ) ) {
12+ // top page
13+ url = getWindowLocation ( ) . href || '' ;
14+ } else {
15+ // iframe
16+ url = getWindowTop ( ) . location . href || '' ;
17+ }
1218
1319 if ( url . length >= 50 ) {
14- const { origin } = new URL ( url ) ;
15- return origin ;
16- }
20+ return new URL ( url ) . origin ;
21+ } ;
1722
1823 return url ;
1924 } catch ( error ) {
25+ // Handling access errors, such as cross-domain restrictions
2026 logError ( `Error accessing location: ${ error } ` ) ;
2127 return '' ;
2228 }
@@ -31,12 +37,12 @@ export function getReferrer() {
3137 * @return {string } The modified URL with appended `vrref` or `fui` parameters.
3238 */
3339export function appendVrrefAndFui ( url , domainName ) {
34- const fullUrl = encodeURIComponent ( getReferrer ( ) ) ;
40+ const fullUrl = getCurrentUrl ( ) ;
3541 if ( fullUrl ) {
3642 return ( url += '&vrref=' + getRelevantRefferer ( domainName , fullUrl ) ) ;
3743 }
3844 url += '&fui=1' ; // Full Url Issue
39- url += '&vrref=' + encodeURIComponent ( domainName || '' ) ;
45+ if ( domainName ) url += '&vrref=' + encodeURIComponent ( domainName ) ;
4046 return url ;
4147}
4248
@@ -47,10 +53,9 @@ export function appendVrrefAndFui(url, domainName) {
4753 * @return {string } The relevant referrer
4854 */
4955export function getRelevantRefferer ( domainName , fullUrl ) {
50- if ( domainName && isDomainIncluded ( fullUrl , domainName ) ) {
51- return fullUrl ;
52- }
53- return domainName ? encodeURIComponent ( domainName ) : fullUrl ;
56+ return encodeURIComponent (
57+ domainName && isDomainIncluded ( fullUrl , domainName ) ? fullUrl : ( domainName || fullUrl )
58+ ) ;
5459}
5560
5661/**
@@ -61,7 +66,7 @@ export function getRelevantRefferer(domainName, fullUrl) {
6166 */
6267export function isDomainIncluded ( fullUrl , domainName ) {
6368 try {
64- return fullUrl . includes ( domainName ) ;
69+ return new URL ( fullUrl ) . hostname === domainName ;
6570 } catch ( error ) {
6671 logError ( `Invalid URL provided: ${ error } ` ) ;
6772 return false ;
0 commit comments