Several years ago when I first put together a library of functions to handle common tasks cross-browser, the source I was using (a Sitepoint book) said that Safari did not support any way of preventing an event's default action through event listeners. Therefore, there was no choice but to add an onclick function that returned false.
Code:
function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} else if (elm.attachEvent) {
		var r=elm.attachEvent('on' + evType, fn);
		return r;
	} else {
		elm['on' + evType]=fn;
	}
}
function stopDefault(e) {
	if (e && e.preventDefault) {
		e.preventDefault();
	} else if (window.event) {
		window.event.returnValue = false;
	}
}
function stopDefaultSafari() {
	return false;
}

addEvent(myEl, 'click', stopDefault, false);
myEl.onclick = stopDefaultSafari;
I would really like to stop using such a clunky method and was wondering if Safari now supports preventDefault. I can't seem to find that info anywhere. Does anyone know? And if so, can you tell me specifically what version began supporting it?