HighlightSelected

Highlight selected text on doubleclick

< 腳本HighlightSelected的回應

提問/評論

§
發表於:2019-08-15

See description

// ==UserScript==
// @name        HighlightSelected
// @namespace   novhna
// @`description`   Highlight selected text on doubleclick. The small modification allows to keep the original double-click functionality and to execute the entire script only when the control key (ctrlKey) is pressed. Tested on Vivaldi v. 2.6.1566.49 (64-Bit)
// @include     *
// @version     0.0.2
// @grant       GM_getValue
// @grant       GM_setValue
// ==/UserScript==

const highlighter = text => `<span
    class="tmp-highlighted"
    style="background-color: greenyellow;"
>${text}</span>`

const replacer = selected => text => text === selected
                                      ? highlighter(text)
                                      : text

const cleaner = () => document
    .querySelectorAll('span.tmp-highlighted')
    .forEach(tag => tag.outerText = tag.innerText)

document.body.addEventListener('dblclick', function(ev) {
    if(!ev.ctrlKey) {
    return; // break condition is met
    }
    cleaner()

    const selected = document.getSelection().toString().trim()
    if (!selected) return false

    const page = document.body.innerHTML
    const re = RegExp(`<.+?>|\\b(${selected})\\b`, 'g')
    console.log(`[${selected}]`, re)

    const newPage = page.replace(re, replacer(selected))
    document.body.innerHTML = newPage
})

發表回覆

登入以回復