这个错误可能是不可重现的(编辑:所以我想)。我有一个带有 onkeyup 和 oninput 的 textarea,当我 ctrl-v 将某些内容粘贴到 textarea 中时,它会被粘贴两次,并且 oninput 事件会触发两次。不过,使用鼠标上下文菜单粘贴效果很好。然后我将 onkeyup 的名称更改为 onkeyup_ 以暂时避免它触发以查看发生了什么变化,没有任何变化。然后我测试只是为了确保“onkeyup_”事件没有触发;onkeyup_="alert('这不应该触发')"。现在,当我尝试将文本粘贴到文本区域而不是获取文本时,我粘贴的文本“这不应该触发”改为显示在文本区域中,警报没有创建警报窗口,而是转储它的参数进入文本区域,很奇怪。
使用 ctrl-v 粘贴时,文本被添加两次,并且 oninput 触发两次,使用鼠标上下文菜单粘贴时,文本仅出现一次。但现在出现了奇怪的部分,我完全删除了 onkeyup_ 事件,但即使它不再出现在代码中,它也会继续触发!当我“检查元素”时,我确实确认警报代码不再在 html 中,但它一直在触发,并且它不断将其参数转储到 textarea 中,而不是在警报窗口中显示它。Chrome 如何执行不再存在的代码?它是否保留了旧版本的某种副本,到目前为止我已经进行了很多更改,Chrome 获取了该文件的新版本。为什么警报没有按预期工作?
编辑:唷,很难追查(我有很多代码),但这重现了 Chrome 上的错误,但在 Firefox 上运行良好:
<html>
<head>
<script>
function f(d){
alert(d.value);
}
</script>
<body>
<textarea name="commentBody" rows="8" cols="50" id="addVideo" oninput="f(this)" placeholder="Placeholder text..." style="margin-left: 0px; margin-right: 0px; width: 489px; margin-top: 5px; margin-bottom: 5px; height: 120px; "></textarea>
</body>
</html>
那么问题是alert字段的值吗?为什么?