我正在使用內容腳本來操作DOM中的數據。 我一直在使用document.execCommand('copy');成功在一個彈出頁面上。剪貼板複製/粘貼內容腳本(Chrome擴展)
我現在正在尋找一種方法使其在內容腳本上工作。 我檢查了內容腳本here的限制,但我不明白剪貼板控件是否受限。 我也在這裏檢查了答案 - 在stackoverflow,但似乎大多數是不確定的,有些來自幾年前,所以可能會有變化。
即使它是有限的,是否有可能有某種解決方法?
謝謝!
我發佈了我有的當前腳本。
的manifest.json
{
"name": "Page action by URL",
"version": "1.0",
"description": "Прибавка за обработка на данните от НБДН.",
"background": {
"scripts": ["background.js"],
"persistent": false
},
"page_action" :
{
"default_icon" : "icon-19.png",
"default_title" : "Приложение за НБД за PHP"
},
"permissions" : [
"clipboardWrite",
"clipboardRead",
"declarativeContent",
"activeTab",
"tabs",
"https://nbd.grao.government.bg/graoappshort/*"
],
"icons" : {
"48" : "icon-48.png",
"128" : "icon-128.png"
},
"manifest_version": 2
}
background.js
chrome.runtime.onInstalled.addListener(function() {
// Replace all rules ...
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
// With a new rule ...
chrome.declarativeContent.onPageChanged.addRules([
{
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { urlContains: 'nbd.grao.government.bg/graoappshort/' },
})
],
actions: [ new chrome.declarativeContent.ShowPageAction() ]
}
]);
});
});
chrome.pageAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, {file: 'page-editor.js'});
chrome.tabs.insertCSS(null, {file: "style-inject.css"});
});
和頁面editor.js內裏的功能
function(){
var copyFrom = document.createElement("textarea");
copyFrom.textContent = PoleIME.value;
document.body.appendChild(copyFrom);
copyFrom.focus();
document.execCommand('SelectAll');
document.execCommand('Copy');
//document.body.removeChild(copyFrom);
}
你能否證實腳本是注入的嗎?你應該嘗試傳遞'tab.id'而不是'null'。 – Xan 2014-09-02 11:34:42
什麼是PoleIME?它是否包含在你的'page-editor.js'中,還是在頁面自己的腳本中? – Xan 2014-09-02 11:37:22
是的,我確認腳本被注入並且DOM正在被成功處理。 PoleIME是一個填充數據的輸入字段。它包含在腳本中。 textarea copyForm已成功添加到主體,並且已成功填充和選擇。我在頁面上看到結果,但複製功能不起作用。 整個腳本處於工作狀態,沒有進行優化,並且是6600行 - 這就是爲什麼我沒有包含它。 – 2014-09-02 12:06:31