简体   繁体   中英

how can scripts get the current route location in SPA

I am trying to add tracking script in.js file to my angular 12 application.

(function() {
    var ds = document.getElementsByTagName("script")[0];
    var dm = document.createElement("img");
    dm.width = 1;
    dm.height = 1;
    dm.alt = " ";
    dm.src = "https://example.com/url=" + window.location.href;
    ds.parentNode.insertBefore(dm, ds);
})();

Script fires properly on the first page, but doesn't fire on navigating to another page on my website. When i check in elements window.location.href is not changing for the new page. It is because of SPA. How can i get latest location on all pages and script to fire on all pages

You could do it the Angular way, although idk if that will work.

You can go into your root component (should be AppComponent), and simply throw this inside the constructor or ngOnInit()

@Component({
 ...
})
export class AppComponent {
  constructor(router: Router) {
    router.events.pipe(
      filter(route => route instanceof NavigationEnd),
      concatMap((route) => ajax('https://example.com/url=' + route.url)),
    ).subscribe();
  }
}

Unless you need your tracker to be an Img for some reason, or you get permission / CORS issues. This should work nicely

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM