我有一个超出浏览器窗口大小的简单文本区域,如下所示。当用户添加一些文本时,窗口总是滚动到光标的位置。因此,如果光标跳出窗口,窗口将滚动到底部。那么我怎样才能让它完全不滚动(光标应该离开可见窗口)?
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<style>
textarea{
margin-top: 500px;
padding: 0;
position: absolute;
}
</style>
<script type="text/javascript">
function keypressed(el,event) {
if(event.keyCode == 8){
event.preventDefault();
} else {
el.value = el.value + String.fromCharCode(event.keyCode);
}
return false;
}
</script>
</head>
<body class=noscroll">
<textarea onkeypress="keypressed(this,event);return false;" rows="5"></textarea>
</body>
</html>
到目前为止,我对文本区域使用了固定定位,并且永远不会出现滚动。由于 iOS 无法以正确的方式显示固定定位,因此我尝试使用绝对定位,如上所示。我添加了一些 onkeypressed 代码以防止在任何输入上滚动,这有效但不适用于 BACKSPACE (keycode == 8)。一旦光标离开窗口并按下退格键,窗口将再次滚动到光标的位置。
有没有更简单的方法可以达到目标,还是我错过了什么?
感谢任何提示。
最佳答案
查看 javascript 控制台后 - 您的代码中有错误。
你想在这里完成什么? onkeydown="onkeydown(this,event);"
未捕获的 RangeError:超出最大调用堆栈大小
关于javascript - 防止窗口在 textarea 中的退格键上滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22101196/