Я использую скрипт Content для управления данными в 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
Что такое 'PoleIME'? Он содержится внутри вашего 'page-editor.js' или находится в собственном скрипте страницы? – Xan
Да, я подтверждаю, что сценарий инъецируется и DOM успешно обрабатывается. PoleIME - поле ввода, которое заполняется данными. В нем содержится сценарий. Textarea copyForm успешно добавляется к телу, и он успешно заполняется и выбирается. Я вижу результат на странице, но функция копирования не работает. Весь сценарий находится в рабочем состоянии и не оптимизирован и составляет 6600 строк - вот почему я его не включил. –