Rendi l'elemento DOM efficace in sola lettura
Domanda
Sto scrivendo un controllo di moduli .NET per modificare HTML usando MSHTML. Sto creando alcuni elementi personalizzati e voglio renderli effettivamente di sola lettura. Ho pensato di poterlo fare concentrandomi sull'intero elemento ogni volta che lo stato attivo è entrato ovunque in quell'elemento, ma HtmlElement.Focus () non seleziona l'intero elemento e non riesco a catturare l'ingresso del cursore .
Un'altra opzione sarebbe quella di generare un evento ogni volta che il testo dell'elemento viene modificato (su KeyDown, mi aspetto), ma non riesco nemmeno a far scattare quell'evento. Qualche idea sul perché le mie aspettative sul comportamento degli eventi siano sbagliate o suggerimenti alternativi per l'implementazione?
Soluzione
Ho scoperto che l'impostazione dell'attributo:
contentEditable=false
Ha comportato il comportamento desiderato.
Altri suggerimenti
Nel caso in cui si stia tentando di applicare un comportamento di sola lettura a un controllo Input utente, è possibile provare a utilizzare l'attributo @readonly di quel controllo. Altrimenti, potresti anche aggiungere listener di eventi per gli eventi UI appropriati (keydown, mousedown) e prevenirne il comportamento predefinito (return false o event.returnValue = false). Per quanto riguarda l'invio di eventi personalizzati, puoi davvero farlo. Utilizzare il nome dell'evento noto a IE. E un altro suggerimento potrebbe essere: registrare un gestore eventi onchange e ripristinare il valore di controllo sul valore di defaultValue (proprietà di tutti i controlli di input).
Spero che alcune idee possano aiutare.