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:
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 oracodice:((nRowStart === 0 || nDeltaForw > 0 || nKey > 0) && (sRow.length < nCols || (nKey > 0 && (nLen === nRowEnd || sVal.charAt(nRowEnd) === "\n"))))
Spero comunque che tu abbia capito qual è il problema. Puoi verificarlo da te con questa pagina di test:
Aprila con Firefox e con Safari e digita tasti a caso, alternando caratteri e metatasti (invio, frecce, canc, etc. etc.).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>
![]()


Rispondi quotando