MozillaZine

Inserting text at cursor

From MozillaZine Knowledge Base

(Difference between revisions)
Revision as of 03:17, 19 December 2004
Asqueella (Talk | contribs)

<-- Previous diff
Revision as of 10:56, 16 January 2005
Asqueella (Talk | contribs)
(categories)
Next diff -->
Line 29: Line 29:
Known restriction: <textbox> must be focused. If it isn't, you have to focus it temporarily. Known restriction: <textbox> must be focused. If it isn't, you have to focus it temporarily.
-[[Category:Development]]+[[Category:Development|Inserting text at cursor]] [[Category:Example code|Inserting text at cursor]]

Revision as of 10:56, 16 January 2005

This page is part of the extension development documentation project.

Ask your questions in MozillaZine Forums. Also try browsing example code.

Note: development documentation is in process of being moved to Mozilla Development Center (MDC).

Note: This is only tested with Firefox 0.9/1.0PR, but should work with everything else. Change this note if it works for you ;)

Problem

How do I insert some text at cursor position, just as if user typed it?

Solution

Let's say you have a focused <textbox> in current document. The following function will insert aText string at the cursor position.

function insertText(aText) {
  try {
    var command = "cmd_insertText";
    var controller = document.commandDispatcher.getControllerForCommand(command);
    if (controller && controller.isCommandEnabled(command)) {
      controller = controller.QueryInterface(Components.interfaces.nsICommandController);
      var params = Components.classes["@mozilla.org/embedcomp/command-params;1"];
      params = params.createInstance(Components.interfaces.nsICommandParams);
      params.setStringValue("state_data", aText);
      controller.doCommandWithParams(command, params);
    }
  }
  catch (e) {
    dump("Can't do cmd_insertText! ");
    dump(e+"\n")
  }
}

Known restriction: <textbox> must be focused. If it isn't, you have to focus it temporarily.