Sembra chiamare il focus()
(che jquery-ui esegue per impostazione predefinita sul primo elemento tabbable) su Chrome (non è possibile testare IE - su OS X) mette a fuoco la casella e seleziona il testo all'interno della casella.
Tratto da jquery.dialog.ui.js:
// set focus to the first tabbable element in the content area or the first button
// if there are no tabbable elements, set focus on the dialog itself
$(self.element.find(':tabbable').get().concat(
uiDialog.find('.ui-dialog-buttonpane :tabbable').get().concat(
uiDialog.get()))).eq(0).focus();
Firefox, d'altra parte, sembra porre solo il cursore all'interno della casella quando si chiama messa a fuoco. Pertanto, è necessario chiamare implicitamente il comando select dopo aver creato la finestra di dialogo per ottenere ciò che si sta cercando di fare.
Se ricarichi i timer a tempo violento (anziché fare clic su Esegui), noterai che l'esempio funziona sempre. Penso che jsFiddle sia effettivamente il colpevole qui (probabilmente l'evento di hashchange, o qualche evento di messa a fuoco su uno dei pannelli dopo aver premuto 'run' - non ho scavato così profondamente).
EDIT: (mi dispiace, è tardi) Sembra che la causa principale del "problema" è Firefox. Non sono sicuro se questo è stato progettato o meno, ma da quello che posso vedere, sembra che Firefox non consenta di selezionare il testo in due diversi elementi di input all'interno di diversi riquadri di contenuti contemporaneamente nella stessa pagina. Questo non sembra influenzare Chrome (e, supposto, IE9).
Ho fatto un rapido esempio locale che ha due iframe uno di fianco all'altro (chiamiamoli a destra ea sinistra). Sinistra contiene un'area di testo e destra contiene la finestra di dialogo jquery-ui, simile al violino che hai postato. ha diritto il seguente codice:
<script type="text/javascript">
$('<div><input type="text" value="val" /></div>').dialog();
$('input').select();
</script>
sinistra ha il seguente codice:
<script type="text/javascript">
setTimeout(function() {
$('textarea').focus();
}, 1000);
</script>
Se pezzo questi insieme e controllare il risultato in Firefox, si noterà che l'ingresso è focalizzato e selezionato fino a quando la textarea a sinistra è focalizzata. Sospetto che qualcosa di simile a questo stia succedendo in jsFiddle.
+1 per una risposta ben scritta, quindi c'è qualche soluzione per questo? – qwertymk
Non ho avuto la possibilità di guardare oltre. Direi che è possibile che si tratti di un bug in Firefox. Hai scoperto qualcos'altro al riguardo o hai trovato una soluzione? – chrisn
Niente di definitivo solo un mucchio di teorie. Sto per gettare la spugna su questo e fare pace con il fatto che browser diversi avranno ux diversi – qwertymk