javascript - IE 中触发的事件是异步发生的

标签 javascript jquery internet-explorer events asynchronous

请看下面的代码。

var $myInput = $('#myInput'); //select the <input> element

$myInput.on('focus', function(){
   console.log('Input focused');
})

现在如果我在 IE 中执行以下两行:

$myInput.trigger('focus');
console.log('Done');

..输出将是:

Done
Input Focused

这是因为,在 IE 中,触发的事件是异步执行的。但在所有其他浏览器中情况恰恰相反。除了使用 triggerHandle() 或手动调用事件处理函数之外,还有其他解决方法吗?

最佳答案

没有。没有办法可靠地保证订单。解决方法是不要伪造事件。将 focus 事件中执行的逻辑放入其自己的函数中,然后直接调用它。

var $myInput = $('#myInput');    
$myInput.on('focus', function() {
  foo();
})    

foo();
console.log('Done');

function foo() {
  console.log('foo');
}

关于javascript - IE 中触发的事件是异步发生的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46725641/

相关文章:

javascript - 更改 Grails GSP 变量标记

javascript - jquery 奇怪的行为

javascript - 在没有 Web 服务器的情况下使用 jQuery 获取 JSON 文件

javascript - Uncaught Error : unsupported number: 00940155. 184155.1840040

javascript - 遍历范围的函数式方法 (ES6/7)

javascript - 选中单选按钮之一时启用表单字段,取消选中时禁用字段

jquery - jQuery 中的动画标题

所有 IE 版本中的 jQuery .load() 问题

css - IE6 中不显示 div

javascript - 将 Google map 嵌入为 CSS 叠加层无法正确加载