gpt4 book ai didi

javascript - 在新值可用之前触发输入上的 Drop 事件

转载 作者:行者123 更新时间:2023-12-03 08:38:08 24 4
gpt4 key购买 nike

当选择某些文本并将其拖入其中时,我想读取输入的,因此我监听“drop”事件:

$input.on('drop', function() {
console.log($input.val());
});

这样我就得到了旧值(在 Chrome 45、Firefox 41、Opera 32、Internet Explorer 9 上测试;在 Safari 5.1 上,drop 事件未触发,我猜这是由于旧版本不支持HTML5)。

为了解决这个问题,我在短暂的超时后安排了该函数,以便新值可读:

$input.on('drop', function(e) {
window.setTimeout(function() {
console.log($input.val());
}, 100);
});

它有效,但我问:

  1. 这是默认行为吗?
    (如果在该级别可以应用 preventDefault() 方法,我就能理解为什么该值尚未更新)。
  2. 是否可以访问新值而无需等待哪怕很短的超时?
    (我检查了事件属性,但不幸的是没有发现有趣的东西)。

最佳答案

是的,这是默认行为。 (这是正确的,但大多数时候不一定是所希望的。)

否 - 在当前实现中,数据在放置事件中不可用。如果有答案,那就是 evt.originalEvent.dataTransfer.items。您实际上看到的看起来像是竞争条件。您通常可以通过执行 setTimeout 来解决这些问题,就像您所做的那样。当它是“真实”竞争条件时,您可以使用 0 作为超时。例如setTimeout(function(){ ... }, 0);

确实适用于您的代码,而且我个人觉得使用 0 的 setTimeout 更舒服,而不是任意数字 - 在我看来,这是一个可以接受的解决方法。

当然,您可以使用 change 事件 - 这是一个选项吗?

关于javascript - 在新值可用之前触发输入上的 Drop 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33134544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com