Parfois, il est important de définir une limite du script.
Vous pouvez utiliser le code suivant pour désactiver l'insertion si la valeur de l'éditeur est plus longue qu'une certaine limite
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
Pourriez-vous s'il vous plaît dire dans quels cas en avez-vous besoin, pour nous aider à comprendre si cela doit faire partie de l'ensemble d'options par défaut ou d'une extension.
Bien sûr!! Ainsi, dans notre application, le script est persisté dans la base de données et il y a une limite à cette colonne. Je pense que cela devrait être très courant car l'éditeur est en fait très utilisé dans les applications Web. Par contre, le script ci-dessus devrait résoudre mon problème... merci
Pour vous assurer que la longueur résultante est celle qui est limitée, et pour permettre des pâtes volumineuses en coupant l'extrémité, essayez cette modification :
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
Cela pourrait être bénéfique de l'optimiser davantage pour la production, mais j'espère que cela aidera quand même quelqu'un !
De plus, je suis tombé sur le même cas d'utilisation que @christianbs :)
Commentaire le plus utile
Pour vous assurer que la longueur résultante est celle qui est limitée, et pour permettre des pâtes volumineuses en coupant l'extrémité, essayez cette modification :
Cela pourrait être bénéfique de l'optimiser davantage pour la production, mais j'espère que cela aidera quand même quelqu'un !
De plus, je suis tombé sur le même cas d'utilisation que @christianbs :)