Сделать элемент DOM эффективным только для чтения
Вопрос
Я пишу элемент управления .NET для редактирования HTML с использованием MSHTML. Я создаю некоторые пользовательские элементы и хочу сделать их эффективно только для чтения. Я думал, что смогу сделать это, сосредоточившись на всем элементе в любое время, когда фокус вводится где-либо в этом элементе, но HtmlElement.Focus () не выделяет весь элемент, и мне кажется, что я не могу зафиксировать ввод курсора . р>
Другой вариант - вызывать событие всякий раз, когда изменяется текст элемента (на KeyDown, я ожидаю), но я также не могу запустить это событие. Любые идеи о том, почему мои ожидания в отношении поведения событий неверны, или альтернативные предложения для реализации?
Решение
Я обнаружил, что установка атрибута:
contentEditable=false
Результатом стало желаемое поведение.
Другие советы
Если вы пытаетесь применить поведение readonly к элементу управления User Input, вы можете попробовать использовать атрибут @readonly этого элемента управления. В противном случае вы также можете добавить прослушиватели событий для соответствующих событий пользовательского интерфейса (keydown, mousedown) и запретить их поведение по умолчанию (вернуть false или event.returnValue = false). Что касается пользовательских событий, вы действительно можете это сделать. Используйте имя события, которое известно IE. И еще один совет: зарегистрируйте обработчик события onchange и верните значение элемента управления в значение defaultValue (свойство любых элементов управления вводом).
Надеюсь, что некоторые идеи помогут.