Bene bene, ho capito dove sta l'errore. Nel mio script la variabile nKey dovrebbe contenere 0 qualora il tasto digitato rappresentasse un carattere, mentre dovrebbe contenere un numero maggiore di 0 qualora venisse premuto qualsiasi altro tasto (tipo invio, canc, le frecce, etc. etc.). Questo perché nKey è la proprietà keyCode dell'evento keypress. Se avessi voluto ottenere il codice dei caratteri digitati avrei dovuto chiamare la proprietà charCode, che appunto restituirebbe un numero maggiore di 0 solo qualora venissero digitati dei caratteri.
A quanto pare invece Safari restituisce un numero maggiore di 0 per la proprietà keyCode anche qualora venga digitato un carattere, sicché nel seguente estratto del mio script le condizioni in rosso restituiscono sempre true:

codice:
((nRowStart === 0 || nDeltaForw > 0 || nKey > 0) && (sRow.length < nCols || (nKey > 0 && (nLen === nRowEnd || sVal.charAt(nRowEnd) === "\n"))))
La soluzione sarebbe quella di sostituire nKey > 0 con false se viene digitato un carattere qualsiasi, con true se viceversa viene digitato un tasto non contenente caratteri (invio, canc, etc. etc.). In Firefox è già così. Si dovrebbe trovare un metodo funzionante con Safari. Purtroppo non mi viene in mente niente ora
Spero comunque che tu abbia capito qual è il problema. Puoi verificarlo da te con questa pagina di test:

codice:
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Test keypress</title>
<script type="text/javascript">
function checkKeyCode(oKeyEvent) {
	document.getElementById("restult").innerHTML = (oKeyEvent || window.event || { keyCode: 38 }).keyCode;
}
</script>
</head>

<body>
<form name="myForm">
<textarea cols="50" rows="10" name="myInput" onkeypress="checkKeyCode(event);" /></textarea></p>


La proprietà keyCode dell'evento keyPress per il tasto digitato ha restituito: <span id="restult">[SCRIVI QUALCOSA]</span>.</p>
</form>
</body>
</html>
Aprila con Firefox e con Safari e digita tasti a caso, alternando caratteri e metatasti (invio, frecce, canc, etc. etc.).