fix(goatcounter): properly count SPA page hits (#1718)
On the surface it seems that only google and plausible scripts handle the SPA correctly - but I don't know if maybe others handle window.history API themselves somehow or something like that. However, I am trying out goatcounter and in it's docs I see that it does no special SPA handling, so this has to be fixed. Just doing the dynamic script thing on every nav seems to do the trick. The script is not "spa-preserve" so they wouldn't accumulate - and when I tried the "spa-preserve" + call goatcounter api route it didn't quite work, they actually did accumulate
This commit is contained in:
		
							parent
							
								
									9b47279fe6
								
							
						
					
					
						commit
						6d350500f1
					
				| @ -122,12 +122,14 @@ function addGlobalPageResources(ctx: BuildCtx, componentResources: ComponentReso | ||||
|     `)
 | ||||
|   } else if (cfg.analytics?.provider === "goatcounter") { | ||||
|     componentResources.afterDOMLoaded.push(` | ||||
|       const goatcounterScript = document.createElement("script") | ||||
|       goatcounterScript.src = "${cfg.analytics.scriptSrc ?? "https://gc.zgo.at/count.js"}"
 | ||||
|       goatcounterScript.async = true | ||||
|       goatcounterScript.setAttribute("data-goatcounter", | ||||
|         "https://${cfg.analytics.websiteId}.${cfg.analytics.host ?? "goatcounter.com"}/count") | ||||
|       document.head.appendChild(goatcounterScript) | ||||
|       document.addEventListener("nav", () => { | ||||
|         const goatcounterScript = document.createElement("script") | ||||
|         goatcounterScript.src = "${cfg.analytics.scriptSrc ?? "https://gc.zgo.at/count.js"}"
 | ||||
|         goatcounterScript.async = true | ||||
|         goatcounterScript.setAttribute("data-goatcounter", | ||||
|           "https://${cfg.analytics.websiteId}.${cfg.analytics.host ?? "goatcounter.com"}/count") | ||||
|         document.head.appendChild(goatcounterScript) | ||||
|       }) | ||||
|     `)
 | ||||
|   } else if (cfg.analytics?.provider === "posthog") { | ||||
|     componentResources.afterDOMLoaded.push(` | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user