Ich verwende ein Inhaltsskript, um Daten im DOM zu bearbeiten. Ich habe document.execCommand ('copy'); erfolgreich auf einer Popup-Seite.Zwischenablage Kopieren/Einfügen in Content-Skript (Chrome-Erweiterung)
Ich bin jetzt auf der Suche nach einer Möglichkeit, um es mit einem Content-Skript arbeiten. Ich habe die Einschränkungen für Inhaltsskripte überprüft here, aber ich verstehe nicht, ob Zwischenablage-Steuerelement beschränkt ist oder nicht. Ich habe auch Antworten hier überprüft - in stackoverflow, aber es scheint, dass die meisten unsicher sind und einige sind von vor ein paar Jahren, so könnte es Änderungen geben.
Auch wenn es begrenzt ist, ist es möglich, eine Art Workaround zu haben?
Vielen Dank!
Ich poste das aktuelle Skript, das ich habe.
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"});
});
und die Funktion innerhalb Seite-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);
}
Können Sie bestätigen, dass Das Skript wird überhaupt injiziert? Sie sollten versuchen, 'tab.id' anstelle von' null' zu übergeben. – Xan
Was ist 'PoleIME'? Ist es in Ihrem 'page-editor.js' enthalten oder befindet es sich in dem eigenen Skript der Seite? – Xan
Ja, ich bestätige, dass das Skript injiziert wurde und das DOM erfolgreich manipuliert wurde. PoleIME ist ein Eingabefeld, das mit Daten gefüllt ist. Es enthält das Skript. Die textarea copyForm wird erfolgreich an den Body angehängt und erfolgreich gefüllt und ausgewählt. Ich sehe das Ergebnis auf der Seite, aber die Kopierfunktion funktioniert nicht. Das ganze Skript ist in einem funktionierenden Zustand und nicht optimiert und ist 6600 Zeilen - deshalb habe ich es nicht aufgenommen. –