@@ -149,7 +149,10 @@ s._utils = {
149149 . getEntriesByType ( 'navigation' )
150150 . map ( ( nav ) => nav . type ) . toString ( ) ;
151151
152- }
152+ } ,
153+ isPageStatus : function ( expectedStatus ) {
154+ return this . getPageReloadStatus ( ) === expectedStatus ;
155+ } ,
153156} ;
154157
155158/**
@@ -316,12 +319,20 @@ s._articleViewTypeObj = {
316319
317320 isDirect : function ( referrer ) {
318321 const noReferrer = this . isWithoutReferrer ( referrer ) ;
319- const sessionStart = s . _utils . isSessionStart ( ) ;
322+ const newVisit = this . isNewVisit ( ) ;
320323
321- return ( noReferrer && sessionStart ) ;
324+ return ( noReferrer && newVisit ) ;
322325
323326 } ,
324327
328+ isNewVisit : function ( ) {
329+ const sessionStart = s . _utils . isSessionStart ( ) ;
330+ const pageOneInSession = s . _utils . isPageOneInSession ( ) ;
331+
332+ return ( sessionStart || pageOneInSession ) ;
333+
334+ } ,
335+
325336 isValidURL : function ( urlString ) {
326337 try {
327338 new URL ( urlString ) ;
@@ -339,11 +350,14 @@ s._articleViewTypeObj = {
339350 }
340351 } ,
341352
342- isNavigated : function ( ) {
343- const reloadStatus = s . _utils . getPageReloadStatus ( ) ;
344- return window . performance && ( window . performance . navigation && window . performance . navigation . type === 0 ) || reloadStatus === 'navigate' ;
353+ isNavigated : function ( ) {
354+ return s . _utils . isPageStatus ( 'navigate' ) ;
345355 } ,
346-
356+
357+ isReloaded : function ( ) {
358+ return s . _utils . isPageStatus ( 'reload' ) ;
359+ } ,
360+
347361 isSelfRedirect : function ( ) {
348362 return ( s . _ppvPreviousPage || '' ) . includes ( ( s . pageName || 'NEVER' ) . split ( ':' ) . pop ( ) ) ;
349363 } ,
@@ -357,35 +371,50 @@ s._articleViewTypeObj = {
357371 } ,
358372
359373 getInternalType : function ( referrer ) {
360- let pageViewEvent ;
361- let channel ;
362- const pageNumberOne = s . _utils . isPageOneInSession ( ) ;
363- // Check if page view was caused by a viewport switch
364- if ( this . isSamePageRedirect ( referrer ) ) {
365- pageViewEvent = '' ;
366- return { pageViewEvent} ;
374+ const isNewVisit = this . isNewVisit ( ) ;
375+ let channel = '' ;
376+ let pageViewEvent = '' ;
377+
378+ // internal referrer and redirected www.bild.de to m.bild.de (BILD only use mDot)
379+ if ( this . isSamePageRedirect ( referrer ) && isNewVisit ) {
380+ return {
381+ pageViewEvent : 'event207' ,
382+ channel : 'Direct'
383+ } ;
367384 }
368385
369- if ( this . isFromHome ( referrer ) && this . isNavigated ( ) && ! this . isSelfRedirect ( ) && ! this . isFromOnsiteSearch ( ) && ! this . isFromLesenSieAuch ( ) ) {
370- pageViewEvent = 'event22,event200' ; //Home
371- channel = pageNumberOne ? 'Direct' : channel || '' ;
386+ // fromHome when user click Homepage Teaser
387+ const isFromHome = this . isFromHome ( referrer ) ;
388+ const isCleanNavigation = this . isNavigated ( ) && ! this . isSelfRedirect ( ) && ! this . isFromOnsiteSearch ( ) && ! this . isFromLesenSieAuch ( ) ;
389+
390+ if ( isFromHome && isCleanNavigation ) {
391+ pageViewEvent = 'event22,event200' ; // Home
372392 } else {
373- pageViewEvent = 'event23,event201' ; //Other Internal
374- channel = pageNumberOne ? 'Direct' : channel || '' ;
393+ pageViewEvent = 'event23,event201' ; // interne Quelle
375394 }
376- return { pageViewEvent, channel} ;
395+
396+ // 3. Channel setzen, falls es die erste Seite der Session ist
397+ if ( isNewVisit ) {
398+ channel = 'Direct' ;
399+ }
400+
401+ return { pageViewEvent, channel } ;
377402 } ,
378403
404+
379405 getExternalType : function ( referrer ) {
380406 const referringDomain = s . _utils . getDomainFromURLString ( referrer ) ;
381- const isSessionStart = s . _utils . isSessionStart ( ) ;
407+ const isNewVisit = this . isNewVisit ( ) ;
382408 const isHomepage = s . _utils . isHomepage ( ) ;
383- const isArticle = s . _utils . isArticlePage ( ) ;
409+ const pageIsReloaded = this . isReloaded ( ) ;
384410 let pageViewEvent ;
385411 let channel ;
386412 let mkt_channel_detail ;
387413
388- if ( this . isFromSearch ( referringDomain ) && isHomepage ) {
414+ if ( referringDomain && pageIsReloaded && isNewVisit ) {
415+ pageViewEvent = 'event207' ; // Direct
416+ channel = 'Direct' ;
417+ } else if ( this . isFromSearch ( referringDomain ) && isHomepage ) {
389418 pageViewEvent = 'event24,event209' ;
390419 channel = 'Organic Search Brand' ;
391420 mkt_channel_detail = referringDomain ;
@@ -409,35 +438,55 @@ s._articleViewTypeObj = {
409438 pageViewEvent = 'event205' ;
410439 channel = 'AS News' ;
411440 mkt_channel_detail = referringDomain ;
412- } else if ( ( this . isFromPremiumService ( referrer ) || this . isFromPaypal ( referrer ) ) && isSessionStart ) {
441+ } else if ( ( this . isFromPremiumService ( referrer ) || this . isFromPaypal ( referrer ) ) && isNewVisit ) {
413442 pageViewEvent = 'event208' ;
414443 channel = 'Register & Payment' ;
415444 mkt_channel_detail = referringDomain ;
416445 } else if ( this . isFromPremiumService ( referrer ) || this . isFromPaypal ( referrer ) ) {
417446 pageViewEvent = 'event23,event201' ; // Login via secure.mypass during session
418- } else if ( this . isWithoutReferrer ( ) && this . isNavigated ( ) && isArticle && isSessionStart ) {
419- pageViewEvent = 'event26,event202' ; // Dark Social
420- channel = 'Dark Social' ;
421- } else if ( this . isWithoutReferrer ( ) && this . isNavigated ( ) && isArticle ) {
422- pageViewEvent = 'event26,event202' ; // Dark Social Marketing Channel only with session start
423- } else if ( this . isDirect ( referrer ) ) {
424- pageViewEvent = 'event207' ; // no Referrer at Session Start
425- channel = 'Direct' ;
426- } else {
447+ } else {
427448 pageViewEvent = 'event27,event203' ; // Other External (Referrer)
428449 channel = 'Other External' ;
429450 mkt_channel_detail = referringDomain ;
430451 }
431452 return { pageViewEvent, channel, mkt_channel_detail} ;
432453 } ,
433454
455+ noReferrerType : function ( ) {
456+ const isArticle = s . _utils . isArticlePage ( ) ;
457+ const isNewVisit = this . isNewVisit ( ) ;
458+ const isNavigated = this . isNavigated ( ) ;
459+ const isReloaded = this . isReloaded ( ) ;
460+ let pageViewEvent ;
461+ let channel ;
462+ let mkt_channel_detail ;
463+
464+ if ( isNewVisit && isNavigated && isArticle ) {
465+ pageViewEvent = 'event26,event202' ; // Dark Social
466+ channel = 'Dark Social' ;
467+ } else if ( isNewVisit && ( isNavigated || isReloaded ) ) {
468+ pageViewEvent = 'event207' ; // Direct
469+ channel = 'Direct' ;
470+ } else if ( isNavigated || isReloaded ) {
471+ pageViewEvent = 'event23,event201' ;
472+ }
473+ return { pageViewEvent, channel, mkt_channel_detail} ;
474+ } ,
475+
434476 getViewTypeByReferrer : function ( ) {
435477 const referrer = s . _utils . getReferrer ( ) ;
436478 let pageViewEvent ;
437479 let channel ;
438480 let mkt_channel_detail ;
439481
440- if ( this . isFromInternal ( referrer ) ) {
482+ if ( ! referrer ) {
483+ // no Referrer is set
484+ const noReferrerType = this . noReferrerType ( referrer ) ;
485+ pageViewEvent = noReferrerType . pageViewEvent ;
486+ channel = noReferrerType . channel ;
487+ mkt_channel_detail = '' ;
488+
489+ } else if ( this . isFromInternal ( referrer ) ) {
441490 // Referrer is of same domain
442491 const internalType = this . getInternalType ( referrer ) ;
443492 pageViewEvent = internalType . pageViewEvent ;
@@ -466,9 +515,13 @@ s._articleViewTypeObj = {
466515 const isFromReco = this . isFromReco ( ) ;
467516 const pageNumberOne = s . _utils . isPageOneInSession ( ) ;
468517 const isFromRecoFf = this . isFromRecoFf ( ) ;
518+ const pageIsReloaded = this . isReloaded ( ) ;
519+ const newVisit = this . isNewVisit ( ) ;
469520
470-
471- if ( trackingValue . startsWith ( 'sea.' ) ) {
521+ if ( trackingValue && pageIsReloaded && newVisit ) {
522+ pageViewEvent = 'event207' ; // Direct
523+ channel = 'Direct' ;
524+ } else if ( trackingValue . startsWith ( 'sea.' ) ) {
472525 pageViewEvent = 'event24,event206,event242' ; // Search
473526 channel = 'Paid Marketing' ;
474527 channelCategory = 'Sea' ;
@@ -568,7 +621,8 @@ s._articleViewTypeObj = {
568621
569622 setExtraViewTypes : function ( s ) {
570623 const trackingChannel = this . isOtherTrackingValue ( ) ;
571- if ( trackingChannel ) {
624+ const pageIsReloaded = this . isReloaded ( ) ;
625+ if ( trackingChannel && ! pageIsReloaded ) {
572626 s . _setTrackingValueEvents ( s ) ;
573627 } else {
574628 s . _setExternalReferringDomainEvents ( s ) ;
0 commit comments