Grok hjälpte mig att skapa ett eget tillägg till webbläsaren.
Skapa en katalog som heter utf8-paste-extension
I den skapa tre tomma filer som
background.js
content.js
manifest.json
i background.js denna kod
- Kod: Markera allt
// Försök ta bort befintlig meny för att undvika duplicerade ID:n
chrome.contextMenus.remove("paste-as-utf8", () => {
// Ignorera fel om menyn inte finns
chrome.runtime.lastError;
// Skapa ny meny
chrome.contextMenus.create({
id: "paste-as-utf8",
title: "Klistra in som UTF-8",
contexts: ["editable"]
});
});
chrome.contextMenus.onClicked.addListener((info, tab) => {
if (info.menuItemId === "paste-as-utf8") {
chrome.scripting.executeScript({
target: { tabId: tab.id },
function: pasteAsUTF8
});
}
});
function pasteAsUTF8() {
navigator.clipboard.readText().then(text => {
try {
// Tolka text som Windows-1252 (ANSI) och konvertera till UTF-8
const ansiDecoder = new TextDecoder('windows-1252');
const utf8String = ansiDecoder.decode(new Uint8Array(text.split('').map(c => c.charCodeAt(0))));
// Försök klistra in i aktivt textfält
const activeElement = document.activeElement;
if (activeElement && (activeElement.tagName === 'INPUT' || activeElement.tagName === 'TEXTAREA' || activeElement.isContentEditable)) {
activeElement.setRangeText(utf8String, activeElement.selectionStart, activeElement.selectionEnd, 'end');
activeElement.dispatchEvent(new Event('input', { bubbles: true }));
console.log('Text klistrad in:', utf8String);
} else {
console.warn('Inget redigerbart fält är aktivt. Klicka i ett textfält och försök igen.');
}
} catch (error) {
console.error('Fel vid konvertering eller inklistring:', error);
}
}).catch(err => {
console.error('Kunde inte läsa urklippet:', err);
});
}
I content.js
ingenting, dvs. tom
I manifest.json
- Kod: Markera allt
{
"manifest_version": 3,
"name": "Paste as UTF-8",
"version": "1.3",
"description": "Högerklick för att klistra in ANSI-text som UTF-8",
"permissions": ["clipboardRead", "clipboardWrite", "contextMenus", "activeTab", "scripting"],
"host_permissions": ["<all_urls>"],
"background": {
"service_worker": "background.js"
},
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["content.js"]
}]
}
Sedan under Tillägg aktivera Programmerarläge.
Sedan "Last uppackad" (översättningsmiss kanske?) och peka på katalogen som skapades.
"Klistra in som UTF-8" finns nu i högerklicksmenyn