我正在编写一个 .NET 表单控件来使用 MSHTML 编辑 HTML。 我正在创建一些自定义元素,并希望使它们有效地只读。 我想我可以通过在焦点进入该元素中的任何位置时关注整个元素来解决此问题,但 HtmlElement.Focus() 不会选择整个元素,而且我似乎无法捕获光标的输入.
另一种选择是每当元素的文本发生更改时引发一个事件(我期望在 KeyDown 上),但我也无法触发该事件。 关于为什么我对事件行为的期望是错误的或替代的实施建议有什么想法吗?
我发现设置属性:
contentEditable=false
产生了预期的行为。
如果您尝试将只读行为应用于用户输入控件,您可以尝试使用该控件的 @readonly 属性。否则,您还可以为适当的 UI 事件(keydown、mousedown)添加事件侦听器并阻止其默认行为(返回 false 或 event.returnValue = false)。至于自定义事件调度,你确实可以这样做。使用 IE 已知的事件名称。另一个提示可能是:注册一个 onchange 事件处理程序并将控件的值恢复为 defaultValue (任何输入控件的属性)的值。
希望一些想法能有所帮助。
这会停止按键。
document.onkeydown = function(e){
e = e || window.event
e.preventDefault();
e.stopPropagation();
}