скажите как использовать в своем приложении copy/paste?

17-10-2010 22:45:46
надыбал функцию чтения из буфера

Выделить код

Код:

function readFromClipboard() {
    var url;
    try {
        var clipboard = Components.classes['@mozilla.org/widget/clipboard;1'].getService(Components.interfaces.nsIClipboard);
        var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
        trans.addDataFlavor("text/unicode");
        if (clipboard.supportsSelectionClipboard()) {
            clipboard.getData(trans, clipboard.kSelectionClipboard);
        } else {
            clipboard.getData(trans, clipboard.kGlobalClipboard);
        }
        var data = {};
        var dataLen = {};
        trans.getTransferData("text/unicode", data, dataLen);
        if (data) {
            data = data.value.QueryInterface(Components.interfaces.nsISupportsString);
            url = data.data.substring(0, dataLen.value / 2);
        }
    } catch (ex) {
    }
    return url;
}

а как реализовать именно 'paste' в элемент в котором находится фокус?

bidlocoder пишет

'paste' в элемент в котором находится фокус

Выделить код

Код:

var text = "...";

var cmd = "cmd_insertText";
var controller = document.commandDispatcher.getControllerForCommand(cmd);
if(controller && controller.isCommandEnabled(cmd)) {
    controller = controller.QueryInterface(Components.interfaces.nsICommandController);
    var params = Components.classes["@mozilla.org/embedcomp/command-params;1"]
        .createInstance(Components.interfaces.nsICommandParams);
    params.setStringValue("state_data", text);
    controller.doCommandWithParams(cmd, params);
}
Infocatcher пишет
bidlocoder пишет

'paste' в элемент в котором находится фокус

Выделить код

Код:

var text = "...";

var cmd = "cmd_insertText";
var controller = document.commandDispatcher.getControllerForCommand(cmd);
if(controller && controller.isCommandEnabled(cmd)) {
    controller = controller.QueryInterface(Components.interfaces.nsICommandController);
    var params = Components.classes["@mozilla.org/embedcomp/command-params;1"]
        .createInstance(Components.interfaces.nsICommandParams);
    params.setStringValue("state_data", text);
    controller.doCommandWithParams(cmd, params);
}

спасибо все работает!!!... откуда только вы всё это знаете??  может быть пару сылочек для саморазвития подкинете)))) а вообще этому форуму уже пора свой FAQ делать

Так он есть

bidlocoder пишет

откуда только вы всё это знаете??

на MDC есть поиск

Shutnik пишет
bidlocoder пишет

откуда только вы всё это знаете??

на MDC есть поиск

если бы еще  mdc на не буржуйском языке было))))