injecting javascript into <body> tag

I have a large static site  with lots of static html pages. We want to put in a bit of Google Analytics(GA) tracking cod in all the pages. It is not possible to manually go through each page and insert the script.
However every page already calls a js file called topnav.js in the <head> section. I tried to inject the GA script when topnav.js is called like so

var jsref = document.createElement('script');
jsref.innerHTML="var gaJsHost = ((\"https:\" == document.location.protocol) ? \"https://ssl.\" : \"http://www.\");document.write(unescape(\"%3Cscript src='\" + gaJsHost + \"' type='text/javascript'%3E%3C/script%3E\"));";
      var jsref1 = document.createElement('script');
      jsref1.innerHTML="try {var pageTracker = _gat._getTracker(\"UA-xxxxxx-5\");pageTracker._setDomainName(\""+''+"\");pageTracker._setAllowLinker(true);pageTracker._setAllowHash(false);pageTracker._trackPageview();} catch(err) {}";

The code gets injected successfully but will not work. I think it needs to be in the body tag. I tried  this line


But the catch 22 situation is that when the topnav.js is being loded in the <head>, the <body> hasen't loaded yet so the above line fails.

Does anyone has any solution for this apart from adding the code manually.

Thanks to all.
Who is Participating?
Hans LangerCommented:
Try to include the js file and, when the body is loaded, call his methods, like this:

  <script type="text/javascript">
	var jsref1 = document.createElement('script');

	if (window.attachEvent){
		window.attachEvent("onload", doGACall);			
		window.addEventListener("DOMContentLoaded", doGACall, false);

	function doGACall(){

	  var pageTracker = _gat._getTracker("UA-xxxxxx-5");



Open in new window

ThinkPaperIT ConsultantCommented:
i dont think you can work with the existing javascript, if you need it to be in the body tag.

if all your pages are static, you can probably download a batch text editor like textpad or even use dreamweaver (if you already have it) to open all the pages at once, and do a batch search/replace.

However - this is assuming your <body> tag is the same or similar throughout. *you may need to do several runs of different variations of the <body> tag to ensure it replaces all of them properly*. It should be fairly painless.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.