now getOnlyTypedText can autoselect the typed text. see #229
This commit is contained in:
parent
59f0dcdc13
commit
3928fe399d
1 changed files with 28 additions and 5 deletions
|
|
@ -18,10 +18,11 @@
|
||||||
|
|
||||||
browser.runtime.onMessage.addListener((message) => {
|
browser.runtime.onMessage.addListener((message) => {
|
||||||
switch (message.command) {
|
switch (message.command) {
|
||||||
case "getSelectedText":
|
case "getSelectedText": {
|
||||||
return Promise.resolve(window.getSelection().toString());
|
return Promise.resolve(window.getSelection().toString());
|
||||||
|
}
|
||||||
|
|
||||||
case "replaceSelectedText":
|
case "replaceSelectedText": {
|
||||||
const selectedText = window.getSelection().toString();
|
const selectedText = window.getSelection().toString();
|
||||||
if (selectedText === '') {
|
if (selectedText === '') {
|
||||||
return Promise.resolve(false);
|
return Promise.resolve(false);
|
||||||
|
|
@ -37,7 +38,7 @@ switch (message.command) {
|
||||||
r.insertNode(doc.body);
|
r.insertNode(doc.body);
|
||||||
browser.runtime.sendMessage({command: "compose_reloadBody", tabId: message.tabId});
|
browser.runtime.sendMessage({command: "compose_reloadBody", tabId: message.tabId});
|
||||||
return Promise.resolve(true);
|
return Promise.resolve(true);
|
||||||
break;
|
}
|
||||||
|
|
||||||
case "getText": {
|
case "getText": {
|
||||||
let t = '';
|
let t = '';
|
||||||
|
|
@ -53,15 +54,22 @@ switch (message.command) {
|
||||||
return Promise.resolve(t);
|
return Promise.resolve(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
case "getTextOnly":
|
case "getTextOnly": {
|
||||||
return Promise.resolve(window.document.body.innerText);
|
return Promise.resolve(window.document.body.innerText);
|
||||||
|
}
|
||||||
|
|
||||||
case "getFullHtml":
|
case "getFullHtml": {
|
||||||
return Promise.resolve(window.document.body.innerHTML);
|
return Promise.resolve(window.document.body.innerHTML);
|
||||||
|
}
|
||||||
|
|
||||||
case "getOnlyTypedText": {
|
case "getOnlyTypedText": {
|
||||||
let t = '';
|
let t = '';
|
||||||
const children = window.document.body.childNodes;
|
const children = window.document.body.childNodes;
|
||||||
|
const selection = window.getSelection();
|
||||||
|
|
||||||
|
let firstNode = null;
|
||||||
|
let lastNode = null;
|
||||||
|
|
||||||
for (const node of children) {
|
for (const node of children) {
|
||||||
if (node instanceof Element) {
|
if (node instanceof Element) {
|
||||||
if (node.classList.contains('moz-cite-prefix')) {
|
if (node.classList.contains('moz-cite-prefix')) {
|
||||||
|
|
@ -69,7 +77,22 @@ switch (message.command) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
t += node.textContent;
|
t += node.textContent;
|
||||||
|
|
||||||
|
// Track the first and last nodes for range
|
||||||
|
if (!firstNode) {
|
||||||
|
firstNode = node;
|
||||||
|
}
|
||||||
|
lastNode = node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(message.do_autoselect && selection.isCollapsed && firstNode && lastNode) {
|
||||||
|
const range = document.createRange();
|
||||||
|
range.setStartBefore(firstNode);
|
||||||
|
range.setEndAfter(lastNode);
|
||||||
|
selection.removeAllRanges();
|
||||||
|
selection.addRange(range);
|
||||||
|
}
|
||||||
|
|
||||||
return Promise.resolve(t);
|
return Promise.resolve(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue