我正在使用CLEditor WYSIWYG并试图解决方法来访问iframe内容并计算字符数量(我知道关于你不应该如何限制所见即所得的字符的整个辩论,但我需要展示用户输入了多少个字符的文本表示(不关心生成多少实际的HTML)。通过使用 setInterval()作为CLEditor的事件挂钩,我能够实现字符数。只会改变模糊的火焰。
我的真实问题:
使用setInterval()对性能有害还是我应该使用另一种方法来轮询更改的文本?
以下是我目前使用的方法:
function checkChange(){
$(document).ready(function() {
var t = $("#edFrame").contents().find("body").text().length;
$(".limitCounter").text(t);
});
}
$(document).ready(function () {
$(".wysiwyg").cleditor();
setInterval('checkChange()', 50);
});
答案 0 :(得分:1)
IMO你这是错误的方式。您应该设置一个事件处理程序,在文本更改时触发事件。由于您正在使用jQuery,请查看jQuery事件:http://api.jquery.com/category/events/。具体来说,请阅读.change()
事件,因为我认为这就是您要使用的内容。您将事件附加到对象(#edFrame
),并指定在触发该事件时要调用的函数。
你已经实施了一个忙碌等待系统,虽然它有效但远非最好的设计,并且可能会在将来给你带来麻烦。
答案 1 :(得分:0)
按照上一条评论,可以这样做:
$("#edFrame").cleditor().on('change', function () {
var t = $(this)[0].$area.val().length;
$(".limitCounter").text(t)
});
请记住,显示的长度会计算文本字符以及格式标记。