【发布时间】: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