【发布时间】:2016-12-23 10:11:44
【问题描述】:
Firefox 支持 relatedTarget 用于 focus/blur 但不 focusin/focusout 事件。
IE 仅支持 focusin/focusout 但不 focus/blur 事件。
Chrome 两者都支持。
有没有办法跨浏览器使用relatedTarget?
这是一个blur 示例(在 Chrome 和 FF 中工作,但不是 IE):
https://jsfiddle.net/rnyqy78m/
这里有一个focusin 示例(在 Chrome 和 IE 中工作,但不是 FF):
https://jsfiddle.net/rnyqy78m/1/
编辑
我最终使用了浏览器检测。所以我用
var eventType;
if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1) {
eventType = 'blur';
} else {
eventType = 'focusout';
}
然后是….addEventListener(eventType, …)。
【问题讨论】:
-
我尝试了一些手动创建事件的变体,然后检查您是否可以从它们那里获得相关目标,但以我目前的知识,我无法在 IE 和 chrome 中工作。所以要么摆弄从window.navigator检测firefox,尝试像我一直在尝试的那样使事件特征检测工作,或者最坏的情况只是创建一个变量来存储对最后一个聚焦目标的引用。
-
@Shilly 感谢您的努力。我希望我能想出办法。奇怪的是似乎没有其他人遇到过这个问题。
标签: javascript google-chrome internet-explorer firefox blur