fix reader page to use the background script as a clipboard source instead of breaking the selection all the time
This commit is contained in:
1 parent
f9684b9f9a
commit
ca9c532fb1
6 files changed
+65
-31
No files matched your search
+38
-4
@@ -705,13 +705,13 @@ function build_lookup_comb (forms)
|
|||||||
let last_lookup = "";
|
let last_lookup = "";
|
||||||
let last_time_lookup = Date.now();
|
let last_time_lookup = Date.now();
|
||||||
|
|
||||||
function lookup_indirect(text, time)
|
function lookup_indirect(text, time, divexisted)
|
||||||
{
|
{
|
||||||
if(text == "")
|
if(text == "")
|
||||||
return;
|
return;
|
||||||
//if(time < last_time_lookup+20) // reduces lag buildup
|
//if(time < last_time_lookup+20) // reduces lag buildup
|
||||||
// return;
|
// return;
|
||||||
if(text == last_lookup)// && (exists_div()))// || time < last_time_lookup+100)) // helps reduce double-lookups
|
if(text == last_lookup && divexisted)// || time < last_time_lookup+100)) // helps reduce double-lookups
|
||||||
return;
|
return;
|
||||||
last_lookup = text;
|
last_lookup = text;
|
||||||
last_time_lookup = time;
|
last_time_lookup = time;
|
||||||
@@ -719,12 +719,13 @@ function lookup_indirect(text, time)
|
|||||||
// try to look up successively shorter substrings of text
|
// try to look up successively shorter substrings of text
|
||||||
// deconjugate() returns possible deconjugations, one of which has zero deconjugations, i.e. the plain text
|
// deconjugate() returns possible deconjugations, one of which has zero deconjugations, i.e. the plain text
|
||||||
// build_lookup_comb looks for dictionary definitions matching any deconjugation, returning a list of them
|
// build_lookup_comb looks for dictionary definitions matching any deconjugation, returning a list of them
|
||||||
|
console.log("trying to look up " + text);
|
||||||
let forms = deconjugate(text);
|
let forms = deconjugate(text);
|
||||||
let result = build_lookup_comb(forms);
|
let result = build_lookup_comb(forms);
|
||||||
while(result === undefined && text.length > 0)
|
while(result === undefined && text.length > 0)
|
||||||
{
|
{
|
||||||
//console.log("trying to look up " + text);
|
|
||||||
text = text.substring(0, text.length-1);
|
text = text.substring(0, text.length-1);
|
||||||
|
console.log("trying to look up " + text);
|
||||||
forms = deconjugate(text);
|
forms = deconjugate(text);
|
||||||
result = build_lookup_comb(forms);
|
result = build_lookup_comb(forms);
|
||||||
}
|
}
|
||||||
@@ -810,16 +811,49 @@ browser.contextMenus.create({
|
|||||||
onclick: tryopenwindow
|
onclick: tryopenwindow
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let origin_tab = undefined;
|
||||||
|
|
||||||
|
function set_up_paste_overload()
|
||||||
|
{
|
||||||
|
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");
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
if(origin_tab != undefined)
|
||||||
|
browser.tabs.sendMessage(origin_tab.id, {type:"text",text:text});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (document.readyState == "complete")
|
||||||
|
set_up_paste_overload();
|
||||||
|
else
|
||||||
|
document.addEventListener("DOMContentLoaded", set_up_paste_overload);
|
||||||
|
|
||||||
|
function clipboard_hook(tab)
|
||||||
|
{
|
||||||
|
origin_tab = tab;
|
||||||
|
let target = document.querySelector("#nazeka-paste-target");
|
||||||
|
target.textContent = "";
|
||||||
|
target.focus();
|
||||||
|
document.execCommand("paste");
|
||||||
|
}
|
||||||
|
|
||||||
browser.runtime.onMessage.addListener((req, sender, sendResponse) =>
|
browser.runtime.onMessage.addListener((req, sender, sendResponse) =>
|
||||||
{
|
{
|
||||||
if (req.type == "search")
|
if (req.type == "search")
|
||||||
{
|
{
|
||||||
sendResponse(lookup_indirect(req.text, req.time));
|
sendResponse(lookup_indirect(req.text, req.time, req.divexisted));
|
||||||
}
|
}
|
||||||
else if (req.type == "toggle")
|
else if (req.type == "toggle")
|
||||||
{
|
{
|
||||||
toggle_enabled();
|
toggle_enabled();
|
||||||
}
|
}
|
||||||
|
else if (req.type == "gimmetext")
|
||||||
|
{
|
||||||
|
clipboard_hook(sender.tab);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
<html><body><script src="background-script.js" charset="UTF-8"></script><textarea id="nazeka-paste-target"></textarea></body></html>
|
||||||
+1
-1
@@ -11,7 +11,7 @@
|
|||||||
],
|
],
|
||||||
|
|
||||||
"background": {
|
"background": {
|
||||||
"scripts": ["background-script.js"]
|
"page": "background.html"
|
||||||
},
|
},
|
||||||
|
|
||||||
"web_accessible_resources": [
|
"web_accessible_resources": [
|
||||||
|
|||||||
+1
-1
@@ -14,7 +14,7 @@ html
|
|||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<script src="reader.js"></script>
|
<script src="reader.js" charset="UTF-8"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body lang="ja">
|
<body lang="ja">
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
// Copyright 2017; Licensed under the Apache License, Version 2.0: https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
function toggle()
|
function toggle()
|
||||||
{
|
{
|
||||||
browser.runtime.sendMessage({type:"toggle"});
|
browser.runtime.sendMessage({type:"toggle"});
|
||||||
@@ -38,37 +42,32 @@ function cycle_text(text)
|
|||||||
text_previous = text;
|
text_previous = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
window.addEventListener("load", () =>
|
function gimmetext()
|
||||||
{
|
{
|
||||||
document.querySelector("#nazeka-paste-target").addEventListener("paste", (event) =>
|
browser.runtime.sendMessage({type:"gimmetext"});
|
||||||
{
|
|
||||||
// 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;
|
let interval = 250;
|
||||||
|
async function checkpaste()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
let text = await gimmetext();
|
||||||
|
cycle_text(text);
|
||||||
|
}
|
||||||
|
catch(error){}
|
||||||
|
|
||||||
setInterval(checkpaste, interval);
|
setTimeout(checkpaste, interval);
|
||||||
|
}
|
||||||
|
setTimeout(checkpaste, interval);
|
||||||
|
|
||||||
var executing = browser.tabs.executeScript({
|
var executing = browser.tabs.executeScript({
|
||||||
file: "/texthook.js",
|
file: "/texthook.js",
|
||||||
allFrames: true
|
allFrames: true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
browser.runtime.onMessage.addListener((req, sender, sendResponse) =>
|
||||||
|
{
|
||||||
|
if (req.type == "text")
|
||||||
|
cycle_text(req.text);
|
||||||
|
});
|
||||||
+1
-1
@@ -518,7 +518,7 @@ async function lookup_loop()
|
|||||||
//console.log("queue not empty");
|
//console.log("queue not empty");
|
||||||
let lookup = lookup_queue.pop();
|
let lookup = lookup_queue.pop();
|
||||||
lookup_queue = [];
|
lookup_queue = [];
|
||||||
let response = await browser.runtime.sendMessage({type:"search", text:lookup[0], time:Date.now()});
|
let response = await browser.runtime.sendMessage({type:"search", text:lookup[0], time:Date.now(), divexisted:exists_div()});
|
||||||
if(response)
|
if(response)
|
||||||
{
|
{
|
||||||
let mydiv = build_div(response.text, response.result);
|
let mydiv = build_div(response.text, response.result);
|
||||||
|
|||||||
Reference in new issue
Block a user