tinymce.full.js
function bindEventDelegate(editor, eventName) {
      var eventRootElm = getEventTarget(editor, eventName), delegate;

      function isListening(editor) {
        return !editor.hidden && !editor.readonly;
      }

      if (!editor.delegates) {
        editor.delegates = {};
      }

      if (editor.delegates[eventName]) {
        return;
      }

      if (editor.settings.event_root) {
        if (!customEventRootDelegates) {
          customEventRootDelegates = {};
          editor.editorManager.on('removeEditor', function () {
            var name;

            if (!editor.editorManager.activeEditor) {
              if (customEventRootDelegates) {
                for (name in customEventRootDelegates) {
                  editor.dom.unbind(getEventTarget(editor, name));
                }

                customEventRootDelegates = null;
              }
            }
          });
        }

        if (customEventRootDelegates[eventName]) {
          return;
        }

        delegate = function (e) {
          var target = e.target, editors = editor.editorManager.editors, i = editors.length;

          while (i--) {
            var body = editors[i].getBody();

            if (body === target || DOM.isChildOf(target, body)) {
              if (isListening(editors[i])) {
                editors[i].fire(eventName, e);
              }
            }
          }
        };

        customEventRootDelegates[eventName] = delegate;
        DOM.bind(eventRootElm, eventName, delegate);
      } else {
        delegate = function (e) {
          if (isListening(editor)) {
            editor.fire(eventName, e);
          }
        };

        DOM.bind(eventRootElm, eventName, delegate);
        editor.delegates[eventName] = delegate;
      }
    }
function bindEventDelegate(editor, eventName) {
      var eventRootElm = getEventTarget(editor, eventName), delegate;

      function isListening(editor) {
        return !editor.hidden && !editor.readonly;
      }

      if (!editor.delegates) {
        editor.delegates = {};
      }

      if (editor.delegates[eventName]) {
        return;
      }

      if (editor.settings.event_root) {
        if (!customEventRootDelegates) {
          customEventRootDelegates = {};
          editor.editorManager.on('removeEditor', function () {
            var name;

            if (!editor.editorManager.activeEditor) {
              if (customEventRootDelegates) {
                for (name in customEventRootDelegates) {
                  editor.dom.unbind(getEventTarget(editor, name));
                }

                customEventRootDelegates = null;
              }
            }
          });
        }

        if (customEventRootDelegates[eventName]) {
          return;
        }

        delegate = function (e) {
          var target = e.target, editors = editor.editorManager.editors, i = editors.length;

          while (i--) {
            var body = editors[i].getBody();

            if (body === target || DOM.isChildOf(target, body)) {
              if (isListening(editors[i])) {
                editors[i].fire(eventName, e);
              }
            }
          }
        };

        customEventRootDelegates[eventName] = delegate;
        DOM.bind(eventRootElm, eventName, delegate);
      } else {
        delegate = function (e) {
          if (isListening(editor)) {
            editor.fire(eventName, e);
          }
        };

        DOM.bind(eventRootElm, eventName, delegate);
        editor.delegates[eventName] = delegate;
      }
    }
function bindEventDelegate ( editor , eventName ) { var eventRootElm = getEventTarget ( editor , eventName ) , delegate ; function isListening ( editor ) { return ! editor . hidden && ! editor . readonly ; } if ( ! editor . delegates ) { editor . delegates = { } ; } if ( editor . delegates [ eventName ] ) { return ; } if ( editor . settings . event_root ) { if ( ! customEventRootDelegates ) { customEventRootDelegates = { } ; editor . editorManager . on ( 'removeEditor' , function ( ) { var name ; if ( ! editor . editorManager . activeEditor ) { if ( customEventRootDelegates ) { for ( name in customEventRootDelegates ) { editor . dom . unbind ( getEventTarget ( editor , name ) ) ; } customEventRootDelegates = null ; } } } ) ; } if ( customEventRootDelegates [ eventName ] ) { return ; } delegate = function ( e ) { var target = e . target , editors = editor . editorManager . editors , i = editors . length ; while ( i -- ) { var body = editors [ i ] . getBody ( ) ; if ( body === target || DOM . isChildOf ( target , body ) ) { if ( isListening ( editors [ i ] ) ) { editors [ i ] . fire ( eventName , e ) ; } } } } ; customEventRootDelegates [ eventName ] = delegate ; DOM . bind ( eventRootElm , eventName , delegate ) ; } else { delegate = function ( e ) { if ( isListening ( editor ) ) { editor . fire ( eventName , e ) ; } } ; DOM . bind ( eventRootElm , eventName , delegate ) ; editor . delegates [ eventName ] = delegate ; } }
Binds a event delegate for the specified name this delegate will fire
the event to the editor dispatcher.

@private
@param {tinymce.Editor} editor Editor instance to get event target from.
@param {String} eventName Name of the event for example "click".
Binds a event delegate for the specified name this delegate will fire the event to the editor dispatcher .