Сделать элемент DOM эффективным только для чтения - PullRequest
0 голосов
/ 07 октября 2008

Я пишу элемент управления .NET для редактирования HTML с использованием MSHTML. Я создаю некоторые пользовательские элементы и хочу сделать их эффективно только для чтения. Я думал, что смогу сделать это, сосредоточившись на всем элементе в любое время, когда фокус вводится где-либо в этом элементе, но HtmlElement.Focus () не выделяет весь элемент, и я не могу зафиксировать ввод курсора .

Другой вариант - вызывать событие всякий раз, когда изменяется текст элемента (на KeyDown, я ожидаю), но я также не могу запустить это событие. Любые идеи о том, почему мои ожидания о поведении событий неверны или альтернативные предложения для реализации?

Ответы [ 2 ]

1 голос
/ 07 октября 2008

Я обнаружил, что установка атрибута:

contentEditable=false

Приведено к желаемому поведению.

0 голосов
/ 07 октября 2008

Если вы пытаетесь применить поведение только для чтения к пользовательскому элементу управления вводом, вы можете попробовать использовать атрибут @readonly этого элемента управления. В противном случае вы также можете добавить прослушиватели событий для соответствующих событий пользовательского интерфейса (keydown, mousedown) и запретить их поведение по умолчанию (вернуть false или event.returnValue = false). Что касается пользовательских событий, вы действительно можете это сделать. Используйте имя события, которое известно IE. И еще одна подсказка: регистрация обработчика события onchange и возврат значения элемента управления к значению defaultValue (свойство любых элементов управления вводом).

Надеюсь, что некоторые идеи помогут.

...