diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2022-10-25 00:23:21 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2022-10-25 00:23:21 -0700 |
commit | 17836aa2b518da5702a3a114cac9d94ee0fd44b8 (patch) | |
tree | fdc3b70dfe672c2fc63268c52e404d1d21c3fdab | |
parent | 5d93cd0a16dcfb54690141e836d7d9dfd8b19d27 (diff) | |
download | jp-hash-17836aa2b518da5702a3a114cac9d94ee0fd44b8.tar.gz jp-hash-17836aa2b518da5702a3a114cac9d94ee0fd44b8.tar.bz2 jp-hash-17836aa2b518da5702a3a114cac9d94ee0fd44b8.zip |
firefox: make undo work.
* firefox/jp-hash.js (jp_hash_edit): Use execCommand
to issue insertText actions to edit the object,
rather than doing it directly, so that undo integrity
is preserved.
-rw-r--r-- | firefox/jp-hash.js | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/firefox/jp-hash.js b/firefox/jp-hash.js index 4e76e99..f23ba46 100644 --- a/firefox/jp-hash.js +++ b/firefox/jp-hash.js @@ -105,17 +105,19 @@ async function jp_hash_edit(elem) if (start != end) { let len = elem.value.length; - let head = elem.value.substring(0, start); let sel = elem.value.substring(start, end); - let tail = elem.value.substring(end, len); jphash(sel, (jph) => { - elem.value = head + jph + tail; - elem.selectionStart = start; - elem.selectionEnd = start + jph.length; + elem.focus(); + document.execCommand("insertText", false, jph); + elem.setSelectionRange(start, start + jph.length); }); } else { - jphash(elem.value, (jph) => { elem.value = jph; }); + jphash(elem.value, (jph) => { + elem.focus(); + elem.select(); + document.execCommand("insertText", false, jph); + }); } } } |