1

我遇到了一个结构复杂的麻烦网页。如果用鼠标单击一个DIV,则一切正常。但是,如果它是由 javascript 聚焦的(即 divElement.focus)。布局变得凌乱。这只发生在 IE7/8 中。

那么,IE中的click-to-focus和focus-by-javascript有什么区别吗?

4

3 回答 3

3

触发 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)。

于 2009-04-12T05:59:29.657 回答
0

这只发生在 IE7/8 中。

嗯,那我确定这是一个与 IE 相关的错误。不奇怪。如果涉及合法的 Javascript 事件,那么它们应该在所有浏览器中统一触发。

于 2009-04-12T15:02:52.410 回答
0

Focus动作的定义是将输入(键盘或鼠标)带到某个元素,通常是输入字段。当元素获得焦点时,会触发 OnFocus 事件。当它失去焦点时,会触发 OnBlur 事件。

通常点击得到的是OnClick事件,与以上两个没有必然联系。

于 2009-04-12T06:22:41.897 回答