Surpressing the Ugly Javascript Alert

Tuesday, May 12, 2009 12:51 AM

Ever work in an environment where developers use javascript:alert("oh hai!"); to debug their code? The lack of using console.log now results in nasty javascript alerts all over the place in production code. It is a less than plesant user experience. The real way to solve this problem is to scrub the source code of all javascript alerts. Anyhow I wrote some javascript to surpress window.top.alert.

This script block should be thrown somewhere in the head, and slingshot.load() in the onload/onready event. For purposes of my example I just threw the slingshot.load() right inline.

<script type="text/javascript">
	var slingshot = {
		load:function(){
			window.top.oldAlert = window.top.alert;
			window.top.alert = function(){ return; };
		},
		trace:function(message){
			if(slingshot.debug)
			{
				window.top.oldAlert(message);
			}
		},
		debug:false
	};
	slingshot.load();
</script>

In order to actually show the alerts just set slingshot.debug to true.

<script type="text/javascript">
	slingshot.debug = true;
	slingshot.trace("hello world!");
</script>

Enjoy.