【问题标题】:Click event on TinyMCE 4.0TinyMCE 4.0 上的点击事件
【发布时间】:2013-05-02 07:08:30
【问题描述】:

最近我尝试将 TinyMce 4.0 集成到我的 Web 应用程序中。我想在单击 textarea 时设置一个单击事件,但它不起作用。我查看了官方文档,并尝试了以下代码:

tinyMCE.init({
   ...
   setup : function(ed) {
      ed.onClick.add(function(ed, e) {
          console.debug('Editor was clicked: ' + e.target.nodeName);
      });
   }

出现错误:“TypeError: ed.onClick is undefined”。

所以,我尝试直接在 iframe 上放置一个 onclick 事件,但失败了:

$("iframe").contents().bind('click', function(){
...
});

您对如何做到这一点有任何想法吗?

【问题讨论】:

  • 你在哪里测试(浏览器)?
  • 您好,我已经在最新版本的 Google Chrome 和最新版本的 Firefox 上进行了测试。

标签: javascript jquery tinymce wysiwyg


【解决方案1】:

TinyMCE v4 从 v3 改变了一些东西 - 试试:

setup : function(ed) {
    ed.on("click", function() {
        alert("Editor Clicked!  Element: " + this.target.nodeName);
    });
};

【讨论】:

  • 重要的是要提到'click'函数中的参数ed不包含编辑器实例。这是我的“init”事件处理案例。要访问编辑器实例(事件的发起者),请使用 -this 关键字,例如:editor.on('init', function () { var doc = this.contentDocument; });
【解决方案2】:

嗯,你可以试试

$(ed.getDoc()).bind('click', function(){
...
});

更新: 看起来没有编辑器初始化到那个时间点。试试

   setup : function(ed) {
      ed.onInit.add(function(ed, e) {
        ed.onClick.add(function(ed, e) {
          console.debug('Editor was clicked: ' + e.target.nodeName);
        });
      });
   }

【讨论】:

  • 感谢您的回答!我已经尝试了您的代码,但出现以下错误:“ReferenceError: ed is not defined”。我什至尝试(测试)将“ed”替换为“window.tinyMCE.get("idOfMyTextarea")”,我又遇到了之前的错误。
  • 我已经尝试过您的代码:它适用于版本 3,但不适用于版本 4。当我尝试使用版本 4 时,出现以下错误:“TypeError: ed.onInit未定义”。该错误仅出现在版本 4 上!
  • 嗯,我现在对新版本 4 不太熟悉 - 抱歉
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 2011-03-26
  • 2016-03-29
相关资源
最近更新 更多