【问题标题】:Alert in setIntervalsetInterval 中的警报
【发布时间】:2021-07-11 13:21:40
【问题描述】:

在下面的代码中,我试图禁用 Ace 编辑器中的粘贴(比如说 textarea)。我想在用户尝试粘贴时添加警报。当我添加alert( ) 时,它会无限期地显示警报。我认为这是因为setInterval( )。但是如果我删除setInterval( ),这个函数就不会运行。有什么方法可以在用户粘贴时只显示一次警报?

var CONTROL_INTERVAL02 = setInterval(function(){

stop = function(e) { 
    e.stopPropagation(); 
    e.preventDefault(); 
}

var el = document.querySelectorAll('.ace_text-input');

if(el.length > 0) {
  for (let i = 0; i < el.length; i++) {
      el[i].addEventListener('paste', stop, true);
  }

}

});

【问题讨论】:

  • 你在删除setInterval之后调用了这个函数吗?
  • 调用setInterval然后在回调中绑定事件监听是没有意义的。这将无限地增加听众。为什么要重复呢?只需执行该代码一次...
  • 谢谢。我是JS的初学者。您的意思是删除 setInterval 吗?删除 setInterval 后不起作用
  • 你需要调用函数,在最后一行这样调用它:CONTROL_INTERVAL02()。只有在调用函数之后,它里面的代码才会被执行。
  • 如果在删除 setInterval control_interval02 变量 inline 函数时它不起作用,那么你可能需要包装你的代码在 document.ready 中:$(function() { stop = function(... })`

标签: javascript jquery ace-editor


【解决方案1】:

正如freedomn-m 所建议的,在删除setInterval( ) 并将其包装在$(document).ready(function() { }) 中之后工作。

【讨论】:

    【解决方案2】:

    setInterval(function, time) 方法用于在每个时间调用函数

    所以你必须使用setTimeout(function, time) 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 2018-05-23
      • 2023-03-11
      • 2019-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多