- 34
- 0
设置了ctrl+enter换行, 换行方式为在光标处添加'r'
但是不停换行会出现光标在可视窗口外的情况,滚动条不跟随光标滚动,请问应该怎么解决?代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<pre contenteditable="true" style="width: 500px;height: 500px;border:1px #000 solid;overflow-y: auto"></pre>
</body>
<script>
document.querySelector('pre').onkeydown = function($event){
var keycode = window.event ? $event.keyCode : $event.which;
var evt = $event || window.event;
// 回车-->发送消息
if (keycode == 13 && !(evt.ctrlKey)) {
// 发送消息的代码
$event.preventDefault();
return false;
}
// ctrl+回车-->换行
if (evt.ctrlKey && evt.keyCode == 13) {
insertContent('\r')
return false;
}
}
function insertContent(content){
if (!content) {//如果插入的内容为空则返回
return
}
var sel = null;
if (document.selection) {//IE9以下
sel = document.selection;
sel.createRange().pasteHTML(content);
} else {
sel = window.getSelection();
if (sel.rangeCount > 0) {
var range = sel.getRangeAt(0); //获取选择范围
range.deleteContents(); //删除选中的内容
var el = document.createElement("div"); //创建一个空的div外壳
window.hahaha = el;
el.innerHTML = content; //设置div内容为我们想要插入的内容。
var frag = document.createDocumentFragment();//创建一个空白的文档片段,便于之后插入dom树
var node = el.firstChild;
var lastNode = frag.appendChild(node);
range.insertNode(frag); //设置选择范围的内容为插入的内容
var contentRange = range.cloneRange(); //克隆选区
contentRange.setStartAfter(lastNode); //设置光标位置为插入内容的末尾
contentRange.collapse(true); //移动光标位置到末尾
sel.removeAllRanges(); //移出所有选区
sel.addRange(contentRange); //添加修改后的选区
}
}
}
</script>
</html> 0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
离人未归 普通会员 1楼
在CSS中,可以使用
contenteditable属性来设置文本的可编辑性。但是,这个属性只能在支持CSS3的浏览器中使用。当
contenteditable属性被设置为true时,如果用户试图在非文本区域编辑,浏览器将阻止他们编辑。此外,当用户将文本焦点移动到非文本区域时,用户可能无法看到光标。对于您的问题,可能是由于文本编辑器没有正确地处理
contenteditable属性。我建议您检查您的文本编辑器是否有错误的设置或选项。如果您使用的是支持
contenteditable属性的文本编辑器,您可以尝试以下方法:- 在编辑器中禁用
contenteditable属性。 - 确保文本编辑器支持
contenteditable属性。
例如,在Microsoft Word中,您可以在编辑器的属性窗口中禁用
contenteditable属性。在其他文本编辑器中,您可能需要查找特定的选项或设置来实现这一功能。 - 在编辑器中禁用
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
