chrome compat fixes
This commit is contained in:
1 parent
353072db11
commit
3dfa11d28a
3 files changed
+47
-43
No files matched your search
@@ -22,6 +22,7 @@ p
|
|||||||
</style>
|
</style>
|
||||||
<script src="include/browser-polyfill.min.js" charset="UTF-8"></script>
|
<script src="include/browser-polyfill.min.js" charset="UTF-8"></script>
|
||||||
<script src="reader.js" charset="UTF-8"></script>
|
<script src="reader.js" charset="UTF-8"></script>
|
||||||
|
<script src="texthook.js" charset="UTF-8"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body lang="ja">
|
<body lang="ja">
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
// updated by a timer looping function, based on local storage set by the options page
|
// updated by a timer looping function, based on local storage set by the options page
|
||||||
// we only use a tiny number of settings here
|
// we only use a tiny number of settings here
|
||||||
|
|
||||||
let settings = {
|
let reader_settings = {
|
||||||
reader_reverse: false,
|
reader_reverse: false,
|
||||||
reader_leeway: 200
|
reader_leeway: 200
|
||||||
};
|
};
|
||||||
|
|
||||||
async function settings_init()
|
async function reader_settings_init()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -19,14 +19,14 @@ async function settings_init()
|
|||||||
let temp = (await browser.storage.local.get(name))[name];
|
let temp = (await browser.storage.local.get(name))[name];
|
||||||
if(temp == undefined)
|
if(temp == undefined)
|
||||||
temp = defval;
|
temp = defval;
|
||||||
settings[name] = temp;
|
reader_settings[name] = temp;
|
||||||
}
|
}
|
||||||
getvar("reader_reverse", false);
|
getvar("reader_reverse", false);
|
||||||
getvar("reader_leeway", 200);
|
getvar("reader_leeway", 200);
|
||||||
} catch(err) {} // options not stored yet
|
} catch(err) {} // options not stored yet
|
||||||
}
|
}
|
||||||
|
|
||||||
settings_init();
|
reader_settings_init();
|
||||||
|
|
||||||
browser.storage.onChanged.addListener((updates, storageArea) =>
|
browser.storage.onChanged.addListener((updates, storageArea) =>
|
||||||
{
|
{
|
||||||
@@ -35,14 +35,14 @@ browser.storage.onChanged.addListener((updates, storageArea) =>
|
|||||||
{
|
{
|
||||||
let option = setting[0];
|
let option = setting[0];
|
||||||
let value = setting[1];
|
let value = setting[1];
|
||||||
if(Object.keys(settings).includes(option))
|
if(Object.keys(reader_settings).includes(option))
|
||||||
settings[option] = value.newValue;
|
reader_settings[option] = value.newValue;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// actual reder code
|
// actual reder code
|
||||||
|
|
||||||
function might_have_japanese(text)
|
function reader_might_have_japanese(text)
|
||||||
{
|
{
|
||||||
for(let char of text)
|
for(let char of text)
|
||||||
if(char && char.length > 0 && char.codePointAt(0) >= 0x2E80)
|
if(char && char.length > 0 && char.codePointAt(0) >= 0x2E80)
|
||||||
@@ -50,26 +50,26 @@ function might_have_japanese(text)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function update(text)
|
function reader_update(text)
|
||||||
{
|
{
|
||||||
if(!might_have_japanese(text))
|
if(!reader_might_have_japanese(text))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let target = document.body;
|
let target = document.body;
|
||||||
let newnode = document.createElement("p");
|
let newnode = document.createElement("p");
|
||||||
newnode.textContent = text;
|
newnode.textContent = text;
|
||||||
|
|
||||||
if(!settings.reader_reverse)
|
if(!reader_settings.reader_reverse)
|
||||||
target.insertBefore(newnode, document.body.firstChild);
|
target.insertBefore(newnode, document.body.firstChild);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
target.appendChild(newnode);
|
target.appendChild(newnode);
|
||||||
|
|
||||||
if(settings.reader_leeway != 0)
|
if(reader_settings.reader_leeway != 0)
|
||||||
{
|
{
|
||||||
let scroll_end_distance = -document.body.scrollHeight + -document.body.clientHeight + 2*document.body.offsetHeight - document.body.scrollTop;
|
let scroll_end_distance = -document.body.scrollHeight + -document.body.clientHeight + 2*document.body.offsetHeight - document.body.scrollTop;
|
||||||
|
|
||||||
if (scroll_end_distance < settings.reader_leeway)
|
if (scroll_end_distance < reader_settings.reader_leeway)
|
||||||
window.scrollTo(0, document.body.scrollHeight);
|
window.scrollTo(0, document.body.scrollHeight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -77,40 +77,36 @@ function update(text)
|
|||||||
document.getElementById("linecount").innerText = parseInt(document.getElementById("linecount").innerText)+1;
|
document.getElementById("linecount").innerText = parseInt(document.getElementById("linecount").innerText)+1;
|
||||||
}
|
}
|
||||||
|
|
||||||
let text_previous = "";
|
let reader_text_previous = "";
|
||||||
function cycle_text(text)
|
function reader_cycle_text(text)
|
||||||
{
|
{
|
||||||
if(text != "" && text != text_previous)
|
if(text != "" && text != reader_text_previous)
|
||||||
update(text);
|
reader_update(text);
|
||||||
text_previous = text;
|
reader_text_previous = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
function gimmetext()
|
function reader_gimmetext()
|
||||||
{
|
{
|
||||||
browser.runtime.sendMessage({type:"gimmetext"});
|
browser.runtime.sendMessage({type:"gimmetext"});
|
||||||
}
|
}
|
||||||
|
|
||||||
let interval = 250;
|
let interval = 250;
|
||||||
async function checkpaste()
|
async function reader_checkpaste()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
let text = await gimmetext();
|
let text = await reader_gimmetext();
|
||||||
cycle_text(text);
|
reader_cycle_text(text);
|
||||||
}
|
}
|
||||||
catch(error){}
|
catch(error){}
|
||||||
|
|
||||||
setTimeout(checkpaste, interval);
|
setTimeout(reader_checkpaste, interval);
|
||||||
}
|
}
|
||||||
setTimeout(checkpaste, interval);
|
setTimeout(reader_checkpaste, interval);
|
||||||
|
|
||||||
var executing = browser.tabs.executeScript({
|
browser.runtime.onMessage.addListener((req, sender) =>
|
||||||
file: "/texthook.js",
|
|
||||||
allFrames: true
|
|
||||||
});
|
|
||||||
|
|
||||||
browser.runtime.onMessage.addListener((req, sender, sendResponse) =>
|
|
||||||
{
|
{
|
||||||
if (req.type == "text")
|
if (req.type == "text")
|
||||||
cycle_text(req.text);
|
reader_cycle_text(req.text);
|
||||||
|
return Promise.resolve(undefined);
|
||||||
});
|
});
|
||||||
+20
-13
@@ -1243,9 +1243,6 @@ function grab_more_text(textNode, direction = 1)
|
|||||||
let inline_like = display.includes("inline") || display == "ruby";
|
let inline_like = display.includes("inline") || display == "ruby";
|
||||||
|
|
||||||
let ruby_interior = tagname == "rt" || tagname == "rp";
|
let ruby_interior = tagname == "rt" || tagname == "rp";
|
||||||
console.log(display);
|
|
||||||
console.log(inline_like);
|
|
||||||
console.log(ruby_interior);
|
|
||||||
if(ruby_interior || !inline_like)
|
if(ruby_interior || !inline_like)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1261,8 +1258,6 @@ function grab_more_text(textNode, direction = 1)
|
|||||||
let parent = current_node.parentNode;
|
let parent = current_node.parentNode;
|
||||||
if(parent == undefined || parent == current_node) break;
|
if(parent == undefined || parent == current_node) break;
|
||||||
let i = Array.prototype.indexOf.call(current_node.parentNode.childNodes, current_node);
|
let i = Array.prototype.indexOf.call(current_node.parentNode.childNodes, current_node);
|
||||||
console.log(current_node);
|
|
||||||
console.log(i);
|
|
||||||
if(i < 0) break;
|
if(i < 0) break;
|
||||||
i += direction;
|
i += direction;
|
||||||
while(i < current_node.parentNode.childNodes.length && i >= 0 && text.length < settings.contextlength && (!text.includes("\n") || settings.ignore_linebreaks))
|
while(i < current_node.parentNode.childNodes.length && i >= 0 && text.length < settings.contextlength && (!text.includes("\n") || settings.ignore_linebreaks))
|
||||||
@@ -1435,7 +1430,7 @@ function update(event)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// find the text under the mouse event
|
// find the text under the mouse event
|
||||||
let nodeIsBad = true;
|
let nodeIsBad = true;
|
||||||
while(nodeIsBad)
|
while(nodeIsBad)
|
||||||
{
|
{
|
||||||
nodeIsBad = false;
|
nodeIsBad = false;
|
||||||
@@ -1488,24 +1483,32 @@ function update(event)
|
|||||||
console.log(hitrect);
|
console.log(hitrect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(ele && !ele.contains(textNode) && platform != "android" && (!settings.sticky || get_doc().body.getElementsByClassName("nazeka_mining_ui").length != 0)) // sticky mode and android need to break out on parent detection
|
// sticky mode and android need to break out on parent detection
|
||||||
|
if(ele && !ele.contains(textNode) && platform != "android" && (!settings.sticky || get_doc().body.getElementsByClassName("nazeka_mining_ui").length != 0))
|
||||||
{
|
{
|
||||||
|
console.log("not parent");
|
||||||
textNode = undefined;
|
textNode = undefined;
|
||||||
offset = undefined;
|
offset = undefined;
|
||||||
hitrect = undefined;
|
hitrect = undefined;
|
||||||
}
|
}
|
||||||
if(hitrect && (x > hitrect.right+5 || x < hitrect.left-5 || y > hitrect.bottom+5 || y < hitrect.top-5))
|
// break out if the mouse isn't actually over the hit rectangle
|
||||||
|
if(hitrect && (x > hitrect.right+5 || x < hitrect.left-5+xoffset || y > hitrect.bottom+5 || y < hitrect.top-5+yoffset))
|
||||||
{
|
{
|
||||||
|
console.log("missed");
|
||||||
|
console.log([x, y, x+offset, y+offset, hitrect]);
|
||||||
textNode = undefined;
|
textNode = undefined;
|
||||||
offset = undefined;
|
offset = undefined;
|
||||||
hitrect = undefined;
|
hitrect = undefined;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
console.log("first try");
|
||||||
hitpage(event.clientX, search_x_offset, event.clientY);
|
hitpage(event.clientX, search_x_offset, event.clientY);
|
||||||
// try without the offset
|
// try without the offset
|
||||||
if (textNode == undefined || (textNode.nodeType != 3 && !acceptable_element(textNode)))
|
if (textNode == undefined || (textNode.nodeType != 3 && !acceptable_element(textNode)))
|
||||||
|
{
|
||||||
|
console.log("retry");
|
||||||
hitpage(event.clientX, 0, event.clientY);
|
hitpage(event.clientX, 0, event.clientY);
|
||||||
|
}
|
||||||
|
|
||||||
if ((platform == "android" || (settings.sticky && get_doc().body.getElementsByClassName("nazeka_mining_ui").length == 0)) && exists_div())
|
if ((platform == "android" || (settings.sticky && get_doc().body.getElementsByClassName("nazeka_mining_ui").length == 0)) && exists_div())
|
||||||
{
|
{
|
||||||
@@ -1541,9 +1544,13 @@ function update(event)
|
|||||||
}
|
}
|
||||||
for(let toreset of nodeResetList)
|
for(let toreset of nodeResetList)
|
||||||
{
|
{
|
||||||
let element = toreset[0];
|
try
|
||||||
let z_index = toreset[1];
|
{
|
||||||
element.style.zIndex = z_index;
|
let element = toreset[0];
|
||||||
|
let z_index = toreset[1];
|
||||||
|
element.style.zIndex = z_index;
|
||||||
|
}
|
||||||
|
catch (err){}
|
||||||
}
|
}
|
||||||
// if there was text, use it
|
// if there was text, use it
|
||||||
let elemental = acceptable_element(textNode);
|
let elemental = acceptable_element(textNode);
|
||||||
@@ -1557,7 +1564,7 @@ function update(event)
|
|||||||
rect = textNode.parentNode.getBoundingClientRect();
|
rect = textNode.parentNode.getBoundingClientRect();
|
||||||
|
|
||||||
// FIXME: Doesn't work to reject in all cases
|
// FIXME: Doesn't work to reject in all cases
|
||||||
if(!ischrome)
|
//if(!ischrome)
|
||||||
{
|
{
|
||||||
let hit = (event.clientX+fud >= rect.left && event.clientX-fud <= rect.right && event.clientY+fud >= rect.top && event.clientY-fud <= rect.bottom);
|
let hit = (event.clientX+fud >= rect.left && event.clientX-fud <= rect.right && event.clientY+fud >= rect.top && event.clientY-fud <= rect.bottom);
|
||||||
//let hit = (event.clientX >= rect.left && event.clientX <= rect.right && event.clientY >= rect.top && event.clientY <= rect.bottom);
|
//let hit = (event.clientX >= rect.left && event.clientX <= rect.right && event.clientY >= rect.top && event.clientY <= rect.bottom);
|
||||||
|
|||||||
Reference in new issue
Block a user