75 lines
1.6 KiB
JavaScript
75 lines
1.6 KiB
JavaScript
function toggle()
|
|
{
|
|
browser.runtime.sendMessage({type:"toggle"});
|
|
}
|
|
|
|
browser.contextMenus.create({
|
|
id: "nazeka-toggle",
|
|
title: "Toggle Nazeka",
|
|
contexts: ["all"],
|
|
onclick: toggle
|
|
});
|
|
|
|
function might_have_japanese(text)
|
|
{
|
|
for(let char of text)
|
|
if(char && char.length > 0 && char.codePointAt(0) > 0x2E80)
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
function update(text)
|
|
{
|
|
if(!might_have_japanese(text))
|
|
return;
|
|
|
|
let target = document.body;
|
|
let newnode = document.createElement("p");
|
|
newnode.textContent = text;
|
|
|
|
target.insertBefore(newnode, document.body.firstChild);
|
|
}
|
|
|
|
let text_previous = "";
|
|
function cycle_text(text)
|
|
{
|
|
if(text != "" && text != text_previous)
|
|
update(text);
|
|
text_previous = text;
|
|
}
|
|
|
|
window.addEventListener("load", () =>
|
|
{
|
|
document.querySelector("#nazeka-paste-target").addEventListener("paste", (event) =>
|
|
{
|
|
// skip event if there's no plaintext; thanks github.com/kmltml/clipboard-inserter
|
|
let text = event.clipboardData.getData("text/plain");
|
|
if(text !== "")
|
|
cycle_text(text);
|
|
|
|
event.preventDefault();
|
|
})
|
|
});
|
|
|
|
function checkpaste()
|
|
{
|
|
let target = document.querySelector("#nazeka-paste-target");
|
|
|
|
target.parentNode.style.visibility = "visible";
|
|
|
|
target.textContent = "";
|
|
target.focus();
|
|
document.execCommand("paste");
|
|
|
|
target.parentNode.style.visibility = "hidden";
|
|
}
|
|
|
|
let interval = 250;
|
|
|
|
setInterval(checkpaste, interval);
|
|
|
|
var executing = browser.tabs.executeScript({
|
|
file: "/texthook.js",
|
|
allFrames: true
|
|
});
|