2013-12-21 96 views
2

我意識到這個問題已被問及幾次回答,但我仍然無法使許多解決方案的工作。似乎大部分討論都比較老,可能與4.x不兼容。我如何觸發tinymce 4.x焦點和模糊事件

我的目標是:焦點或模糊時能夠觸發一些javascript功能。這裏的基本代碼:

$('.tiny-mce').tinymce({ 
    script_url : '/xm_js/tinymce4/tinymce.min.js', 
}); 

我試着像例子:

$('.tiny-mce').tinymce({ 
    script_url : '/xm_js/tinymce4/tinymce.min.js', 

    setup : function(ed) { 
     ed.onInit.add(function(ed, evt) { 

     var dom = ed.dom; 
     var doc = ed.getDoc(); 

      tinymce.dom.Event.add(doc, 'blur', function(e) { 
       alert('blur!!!'); 
      }); 
     }); 
    } 
}); 

回報: 「遺漏的類型錯誤:無法調用未定義的 '添加',」

$('.tiny-mce').tinymce({ 
    script_url : '/xm_js/tinymce4/tinymce.min.js', 
}); 

tinymce.activeEditor.on('focus', function(e) { 
    console.log(e.blurredEditor); 
}); 

回報:「未捕獲TypeError:無法調用未定義的「on」方法「 (但不確定是否將它放在正確的位置)

$('.tiny-mce').tinymce({ 
    script_url : '/xm_js/tinymce4/tinymce.min.js', 

    setup: function(editor) { 
     editor.on('focus', function(e) { 
      console.log('focus event', e); 
     }); 
    } 
}); 

回報: 「未捕獲的SyntaxError:意外的標識符」

此,但只有在啓動時,編輯工作。其他的事情我做過嘗試,但還沒有得到工作:

tinymce.FocusManager tinymce.activeEditor

我缺少什麼?謝謝。

UPDATE:發現精美的工作解決方案:Why TinyMCE get focus and blur event, when user jump from other input field?

回答

3

你cuestion標題它對觸發研究的重點和模糊事件,但你真的是問有關處理這些事件。 如果有人還在尋找觸發事件,該解決方案應該是:

tinymce.init({ 
     selector: "#textarea_123", 
     ... 
    }); 

然後,將焦點設置:

var inst = tinyMCE.EditorManager.get('textarea_123'); 
inst.focus(); 
+0

你知道模糊相應的功能是什麼嗎? – velop

+0

似乎沒有一個。也許把重點放在其他方面可能會有幫助。 https://www.tinymce.com/docs/api/tinymce/tinymce.editor/ – glerendegui

6

看到小提琴在http://fiddle.tinymce.com/8Xeaab/1

tinymce.init({ 
    selector: "#editme", 
    inline: true, 
    setup: function(editor) { 
     editor.on('focus', function(e) { 
      console.log("focus"); 
     }); 

     editor.on('blur', function(e) { 
      console.log("blur"); 
     }); 
    } 
}); 
-1

我最近遇到了這個問題,雖然我在angularjs中這樣做,但我能夠通過創建一個指令來實現對它的修復,當你點擊它時註冊一個指令nd然後清除html正文中的activeElement。我將添加下面的指令。你只需在對象上添加點擊即可,就像你將ng-cloak添加到標籤一樣。

(function() { 
    'user strict'; 

    angular.module('app.directives').directive('clickOff', ClickOff); 

    function ClickOff($parse, $document) { 
    var directive = { 
     link: link 
    }; 

    return directive; 

    function link(scope, $element, attr) { 

     var fn = $parse(attr["clickOff"]); 

     $element.bind('click', function (event) { 
     event.stopPropagation(); 
     }); 

     angular.element($document[0].body).bind("click", function (event) { 
     scope.$apply(function() { 
      $document[0].activeElement.blur(); 
      fn(scope, { $event: event }); 
     }); 
     }); 
    } 
    } 
})(); 
相關問題