javascript - 如何选择wysihtml5编辑器的iframe?

标签 javascript jquery wysiwyg wysihtml5

我正在使用带有 bootstrap-wysihtml5 扩展的 wysiwyg 编辑器 wysihtml5。

我正在构建一个字符计数器,并希望在达到最大长度时在编辑器区域上放置红色边框。

但是我如何在 javscript 中选择文本区域?在源代码中,它不是一个文本区域,它是一个 iframe,并且它没有唯一的 ID 或任何东西。实际上,我在同一个页面上创建了多个编辑器,因此我需要区分我选择的是哪一个。

最佳答案

以下解决方案(使用数据)怎么样:

$($('.textarea').data("wysihtml5").editor

或者您可以通过事件中的 this 引用访问编辑器对象:

$('.textarea').wysihtml5({
  events: {
    load: function() {
      var editor = this;
      $(editor.currentView.doc.body).on("keydown",function(event) {
        var l = event.currentTarget.innerText.length;
        if(l >= 50) {
          $(editor.currentView.iframe).addClass('redborder');
          $(editor.textareaElement).addClass('redborder');
        } else {
          $(editor.currentView.iframe).removeClass('redborder');
          $(editor.textareaElement).removeClass('redborder');
        }
      }); 
    }
  }
});

问题是 onChange 的 iframe 内联样式被覆盖,为此您必须使用具有 important 的类:

.redborder {
  border: 1px solid red !important;
}

这个解决方案至少适用于我的 fork :https://github.com/Waxolunist/bootstrap3-wysihtml5-bower/

您必须测试哪个对象属性包含准确的长度值,因为innerText不包含任何标记。

关于javascript - 如何选择wysihtml5编辑器的iframe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20045374/

相关文章:

jquery - 寻找一个轻量级的所见即所得编辑器

javascript - 动态表,每行一个复选框,并且只能选中一个 (true)

javascript - Angularjs - 表单验证

javascript - 减去后自动填充输入

jquery - 如何使用 jQuery 显示和隐藏下一个元素?

javascript - 检测用户已滚动超过第一部分

javascript - 对所见即所得编辑器的 RTL 支持

javascript - TinyMCE 生成随机 <g> 标签?

javascript - 无法获取/Nodejs 错误

javascript - 如何使用 Firefox 插件读取特定 URL 的 html 内容?