我遇到了一个结构复杂的麻烦网页。如果用鼠标单击一个DIV,则一切正常。但是,如果它是由 javascript 聚焦的(即 divElement.focus)。布局变得凌乱。这只发生在 IE7/8 中。
那么,IE中的click-to-focus和focus-by-javascript有什么区别吗?
我遇到了一个结构复杂的麻烦网页。如果用鼠标单击一个DIV,则一切正常。但是,如果它是由 javascript 聚焦的(即 divElement.focus)。布局变得凌乱。这只发生在 IE7/8 中。
那么,IE中的click-to-focus和focus-by-javascript有什么区别吗?
触发 Javascriptfocus
事件不会触发click
事件。在没有看到相关代码的情况下,我猜测某些click
处理程序已经到位,在您触发focus
事件的情况下没有被调用。
相反,您可以尝试触发click
:
var clickEvent;
if(document.createEvent) {
clickEvent = document.createEvent('click');
clickEvent.initMouseEvent('click');
divElement.dispatchEvent(clickEvent);
} else {
// Semi-pseudocode for IE, not tested, consult documentation if it fails
clickEvent = document.createEventObject();
divElement.fireEvent('onclick');
}
或者,如果您喜欢 jQuery:
$(divElement).click();
Prototype 也有类似的解决方案(搜索 Event.simulate)。
这只发生在 IE7/8 中。
嗯,那我确定这是一个与 IE 相关的错误。不奇怪。如果涉及合法的 Javascript 事件,那么它们应该在所有浏览器中统一触发。
Focus动作的定义是将输入(键盘或鼠标)带到某个元素,通常是输入字段。当元素获得焦点时,会触发 OnFocus 事件。当它失去焦点时,会触发 OnBlur 事件。
通常点击得到的是OnClick事件,与以上两个没有必然联系。