Esto funciona bien para mí en una página de fondo.
function getClipboard() {
var pasteTarget = document.createElement("div");
pasteTarget.contentEditable = true;
var actElem = document.activeElement.appendChild(pasteTarget).parentNode;
pasteTarget.focus();
document.execCommand("Paste", null, null);
var paste = pasteTarget.innerText;
actElem.removeChild(pasteTarget);
return paste;
};
Por supuesto, su extensión aún necesita el permiso "clipboardRead" y usted tiene que utilizar el paso de mensajes para obtener esta información de vuelta a su script contenido:
content.js:
chrome.extension.sendMessage({
cmd: "clipboard", //$NON-NLS-0$
action: "paste" //$NON-NLS-0$
}, function(response) {
if (response.paste) {
var range = document.getSelection().getRangeAt(0);
range.deleteContents();
range.insertNode(document.createTextNode(response.paste));
}
});
fondo .js:
function getClipboard() {
var pasteTarget = document.createElement("div");
pasteTarget.contentEditable = true;
var actElem = document.activeElement.appendChild(pasteTarget).parentNode;
pasteTarget.focus();
document.execCommand("Paste", null, null);
var paste = pasteTarget.innerText;
actElem.removeChild(pasteTarget);
return paste;
};
function onClipboardMessage(request, sender, sendResponse) {
if (request.action === "paste") { //$NON-NLS-0$
sendResponse({
paste: getClipboard()
});
}
}
chrome.extension.onMessage.addListener(onClipboardMessage);
¿Dónde está ejecutando este código? – serg
Eche un vistazo a esto: http://farter.users.sourceforge.net/blog/2010/11/20/accessing-operating-system-clipboard-in-chromium-chrome-extensions/ –
Este código se está ejecutando en una página web regular, no background.html.Sin embargo, esto ya no es una API experimental, y una parte integrada de Chrome a partir de la versión 13 (http://code.google.com/chrome/extensions/whats_new.html#13) Esto significa que debería funcionar ahora. Además, he agregado los permisos para ello :) –