Files
nazeka-chromium/reader.js
T

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.querySelector("#helptext"));
}
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
});