【发布时间】:2010-10-17 12:06:46
【问题描述】:
我遇到了一个关于 HTML 渲染的问题。
在 IE7 的 dir="rtl" 文档中,当 JavaScript 尝试将焦点设置到 DIV 元素(使用 oElement.focus() 方法)时,呈现变得混乱。上下文非常复杂,所以我想最简单的解决方法是让 DIV 无法聚焦?
有什么方法可以让 DIV 不被聚焦?
【问题讨论】:
标签: javascript html focus
我遇到了一个关于 HTML 渲染的问题。
在 IE7 的 dir="rtl" 文档中,当 JavaScript 尝试将焦点设置到 DIV 元素(使用 oElement.focus() 方法)时,呈现变得混乱。上下文非常复杂,所以我想最简单的解决方法是让 DIV 无法聚焦?
有什么方法可以让 DIV 不被聚焦?
【问题讨论】:
标签: javascript html focus
通过添加 CSS 可以轻松解决问题:
div_selector{
pointer-events: none;
}
或者通过 jQuery 添加相同的 css :
$(div_selector).css('pointer-events', 'none');
【讨论】:
以下是使用 jquery 使 DIV 无法聚焦的一些方法。
// Set the tabindex atribute to -1.
1)$("divid").attr('tabindex','-1');
// Remove the tabindex atribute if exists.
2) $("divid").removeAttr('tabindex');
// This is third way.
3) $("divid").blur();
【讨论】:
除非您添加了 tabIndex,否则 <div> 应该无法接收焦点。
如果你添加了tabIndex,你应该删除它
document.getElementById("yourElement").removeAttribute("tabIndex");
【讨论】:
contenteditable="true" 的 div 也可以接收焦点。
另外,如果您想将可聚焦元素(表单输入元素等)设为不可聚焦。你可以设置:
tabIndex = "-1"
document.getElementById("yourElement").setAttribute("tabIndex", "-1");
【讨论】:
我不确定您是否可以使元素“无法聚焦”,但您当然可以使用其blur 方法在特定时间点将其取消聚焦:
document.getElementById("myElement").blur();
编辑:
我认为您可以通过在每次聚焦时散焦来使元素“无法聚焦”。您可以通过以下方式完成此操作:
document.getElementById("myElement").onfocus = function() {
this.blur();
};
...或(在您的 HTML 中使用内联 Javascript):
<div onfocus="this.blur();"></div>
史蒂夫
【讨论】: