Điều này phù hợp với tôi trong trang nền.
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;
};
Tất nhiên phần mở rộng của bạn vẫn cần "clipboardRead" phép và bạn phải sử dụng tin nhắn qua để có được thông tin này trở lại kịch bản nội dung của bạn:
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));
}
});
nền .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);
Bạn đang thực thi mã này ở đâu? – serg
Hãy xem xét điều này: http://farter.users.sourceforge.net/blog/2010/11/20/accessing-operating-system-clipboard-in-chromium-chrome-extensions/ –
Mã này đang được thực hiện trên một trang web thông thường, không phải background.html.Tuy nhiên, đây không còn là API thử nghiệm và được xây dựng một phần của Chrome kể từ phiên bản 13 (http://code.google.com/chrome/extensions/whats_new.html#13) Điều này có nghĩa là nó sẽ hoạt động ngay bây giờ. Ngoài ra, tôi đã thêm các điều khoản cho nó :) –