有时重要的是设置脚本的限制。
如果编辑器值超过某个限制,您可以使用以下代码禁用插入
var doc = editor.session.doc
doc.applyAnyDelta = doc.applyAnyDelta || doc.applyDelta
doc.applyDelta = function(delta) {
if (delta.action == "insert" && this.$maxLength
&& this.getValue().length > this.$maxLength) {
return false;
}
return this.applyAnyDelta(delta);
}
doc.$maxLength = 20
请问您在什么情况下需要这个,以帮助我们了解这是否需要成为默认选项集或扩展的一部分。
当然!! 因此,在我们的应用程序中,脚本保存在数据库中,并且此列有限制。 我想这应该是很常见的,因为编辑器实际上在 web 应用程序中非常常用。 另一方面,上面的脚本应该可以解决我的问题......谢谢
为了确保得到的长度是有限的,并通过修剪末端来允许大粘贴,请尝试以下编辑:
var doc = editor.session.doc
doc.applyAnyDelta = doc.applyAnyDelta || doc.applyDelta
doc.applyDelta = function(delta) {
let joinedLines = delta.lines.join("\n")
if (delta.action == "insert" && this.$maxLength
&& this.getValue().length + joinedLines.length > this.$maxLength) {
let newPasteLength = this.$maxLength - this.getValue().length
if(newPasteLength > 0) {
delta.lines = joinedLines.substr(0, newPasteLength).split("\n")
if(delta.lines.length == 1 && delta.start.row == delta.end.row) {
delta.end = {
row: delta.start.row,
column: delta.start.column+newPasteLength
}
} else {
delta.end = {
row: delta.start.row+delta.lines.length,
column: delta.lines[delta.lines.length-1].length
}
}
} else return false;
}
return this.applyAnyDelta(delta);
}
doc.$maxLength = 20
对生产进行更多优化可能会有所帮助,但我希望这对某人有所帮助!
另外,我遇到了与@christianbs相同的用例:)
最有用的评论
为了确保得到的长度是有限的,并通过修剪末端来允许大粘贴,请尝试以下编辑:
对生产进行更多优化可能会有所帮助,但我希望这对某人有所帮助!
另外,我遇到了与@christianbs相同的用例:)