Сделать элемент DOM эффективным только для чтения

StackOverflow https://stackoverflow.com/questions/176743

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

contentEditable=false

Результатом стало желаемое поведение.

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top