CKEDITOR.plugins.textWatcher
API exposed by the Text Watcher plugin.
Class implementing the text watcher — a base for features like autocomplete. It fires the matched and unmatched events based on changes in the text and the position of the caret in the editor.
To check whether the text matches some criteria, the text watcher uses a callback function which should return the matching text and a CKEDITOR.dom.range for that text.
Since the text watcher works on the DOM where searching for text is pretty complicated, it is usually recommended to use the CKEDITOR.plugins.textMatch.match function.
Example:
function textTestCallback( range ) {
// You do not want to autocomplete a non-empty selection.
if ( !range.collapsed ) {
return null;
}
// Use the text match plugin which does the tricky job of doing
// a text search in the DOM. The matchCallback function should return
// a matching fragment of the text.
return CKEDITOR.plugins.textMatch.match( range, matchCallback );
}
function matchCallback( text, offset ) {
// Get the text before the caret.
var left = text.slice( 0, offset ),
// Will look for an '@' character followed by word characters.
match = left.match( /@\w*$/ );
if ( !match ) {
return null;
}
return { start: match.index, end: offset };
}
// Initialize the text watcher.
var textWatcher = new CKEDITOR.plugins.textWatcher( editor, textTestCallback );
// Start listening.
textWatcher.attach();
// Handle text matching.
textWatcher.on( 'matched', function( evt ) {
autocomplete.setQuery( evt.data.text );
} );
Filtering
Properties
-
The callback passed to the CKEDITOR.plugins.textWatcher constructor.
-
The editor instance which the text watcher watches.
-
-
Keys that should be ignored by the check method.
Defaults to
[16, 17, 18, 91, 35, 36, 37, 38, 39, 40, 33, 34] -
The last matched text.
-
Indicates throttle threshold mitigating text checks.
Higher levels of the throttle threshold will create a delay for text watcher checks but also improve its performance.
See the throttle feature for more information.
Defaults to
0 -
The throttle buffer used to mitigate text checks.
-
Static properties
Methods
constructor( editor, callback, [ throttle ] ) → textWatcherCKEDITOR.plugins.textWatcher#constructorCreates the text watcher instance.
Parameters
editor : editorThe editor instance to watch in.
callback : FunctionCallback executed when the text watcher thinks that something might have changed.
[ throttle ] : NumberThrottle interval, see throttle.
Defaults to
0Returns
textWatcher
Attaches the text watcher to the editor.
Returns
textWatcherthis
capture()CKEDITOR.plugins.textWatcher#captureRegister event handler under the capturing stage on supported target.
check( [ evt ] )CKEDITOR.plugins.textWatcher#checkIgnores the next check.
Returns
textWatcherthis
define( name, meta )CKEDITOR.plugins.textWatcher#definePredefine some intrinsic properties on a specific event name.
Parameters
name : StringThe event name
meta : Objectdestroy()CKEDITOR.plugins.textWatcher#destroyDestroys the text watcher instance. The DOM event listeners will be cleaned up.
fire( eventName, [ data ], [ editor ] ) → Boolean | ObjectCKEDITOR.plugins.textWatcher#fireFires an specific event in the object. All registered listeners are called at this point.
someObject.on( 'someEvent', function() { ... } ); someObject.on( 'someEvent', function() { ... } ); someObject.fire( 'someEvent' ); // Both listeners are called. someObject.on( 'someEvent', function( event ) { alert( event.data ); // 'Example' } ); someObject.fire( 'someEvent', 'Example' );Parameters
eventName : StringThe event name to fire.
[ data ] : ObjectData to be sent as the CKEDITOR.eventInfo.data when calling the listeners.
[ editor ] : editorThe editor instance to send as the CKEDITOR.eventInfo.editor when calling the listener.
Returns
Boolean | ObjectA boolean indicating that the event is to be canceled, or data returned by one of the listeners.
fireOnce( eventName, [ data ], [ editor ] ) → Boolean | ObjectCKEDITOR.plugins.textWatcher#fireOnceFires an specific event in the object, releasing all listeners registered to that event. The same listeners are not called again on successive calls of it or of fire.
someObject.on( 'someEvent', function() { ... } ); someObject.fire( 'someEvent' ); // Above listener called. someObject.fireOnce( 'someEvent' ); // Above listener called. someObject.fire( 'someEvent' ); // No listeners called.Parameters
eventName : StringThe event name to fire.
[ data ] : ObjectData to be sent as the CKEDITOR.eventInfo.data when calling the listeners.
[ editor ] : editorThe editor instance to send as the CKEDITOR.eventInfo.editor when calling the listener.
Returns
Boolean | ObjectA booloan indicating that the event is to be canceled, or data returned by one of the listeners.
hasListeners( eventName ) → BooleanCKEDITOR.plugins.textWatcher#hasListenersChecks if there is any listener registered to a given event.
var myListener = function() { ... }; someObject.on( 'someEvent', myListener ); alert( someObject.hasListeners( 'someEvent' ) ); // true alert( someObject.hasListeners( 'noEvent' ) ); // falseParameters
eventName : StringThe event name.
Returns
Boolean
on( eventName, listenerFunction, [ scopeObj ], [ listenerData ], [ priority ] ) → ObjectCKEDITOR.plugins.textWatcher#onRegisters a listener to a specific event in the current object.
someObject.on( 'someEvent', function() { alert( this == someObject ); // true } ); someObject.on( 'someEvent', function() { alert( this == anotherObject ); // true }, anotherObject ); someObject.on( 'someEvent', function( event ) { alert( event.listenerData ); // 'Example' }, null, 'Example' ); someObject.on( 'someEvent', function() { ... } ); // 2nd called someObject.on( 'someEvent', function() { ... }, null, null, 100 ); // 3rd called someObject.on( 'someEvent', function() { ... }, null, null, 1 ); // 1st calledNote: CKEditor's event system has a limitation that one function cannot be used as a listener for the same event more than once. Hence, to reuse it with multiple listeners, it should be wrapped into additional wrapper function:
function listener( evt ) { ... }; someObject.on( 'someEvent', function() { listener(); } ); someObject.on( 'someEvent', function( evt ) { listener( evt ); } );Parameters
eventName : StringThe event name to which listen.
listenerFunction : FunctionThe function listening to the event. A single CKEDITOR.eventInfo object instanced is passed to this function containing all the event data.
[ scopeObj ] : ObjectThe object used to scope the listener call (the
thisobject). If omitted, the current object is used.[ listenerData ] : ObjectData to be sent as the CKEDITOR.eventInfo.listenerData when calling the listener.
[ priority ] : NumberThe listener priority. Lower priority listeners are called first. Listeners with the same priority value are called in registration order.
Defaults to
10Returns
ObjectAn object containing the
removeListenerfunction, which can be used to remove the listener at any time.once()CKEDITOR.plugins.textWatcher#onceSimiliar with on but the listener will be called only once upon the next event firing.
removeAllListeners()CKEDITOR.plugins.textWatcher#removeAllListenersRemove all existing listeners on this object, for cleanup purpose.
removeListener( eventName, listenerFunction )CKEDITOR.plugins.textWatcher#removeListenerUnregisters a listener function from being called at the specified event. No errors are thrown if the listener has not been registered previously.
var myListener = function() { ... }; someObject.on( 'someEvent', myListener ); someObject.fire( 'someEvent' ); // myListener called. someObject.removeListener( 'someEvent', myListener ); someObject.fire( 'someEvent' ); // myListener not called.Parameters
eventName : StringThe event name.
listenerFunction : FunctionThe listener function to unregister.
Resets the state and fires the unmatched event.
Returns
textWatcherthis
Static methods
-
Implements the CKEDITOR.event features in an object.
var myObject = { message: 'Example' }; CKEDITOR.event.implementOn( myObject ); myObject.on( 'testEvent', function() { alert( this.message ); } ); myObject.fire( 'testEvent' ); // 'Example'Parameters
-