使用 grease/tampermonkey,如何在 Thesaurus.com 打开 Dictionary.com 当前查看的定义?

Using grease/tampermonkey, how can I have the currently viewed definition at Dictionary.com open at Thesaurus.com?

使用 Greasemonkey 或 Tampermonkey,当 the links circled in red are clicked.

时,如何在 Thesaurus.com 打开 Dictionary.com 当前查看的定义(反之亦然)

我看到我可以使用 window.location.pathname 来检索“/browse/test”或正在搜索的任何单词,然后我可以将其放在相反的 link 的主机名上。

Thesaurus.comlink的HTML:<a href="http://www.thesaurus.com/" data-linkid="qxnxzj">Thesaurus.com</a>

Dictionary.comlink的HTML:<a href="http://www.dictionary.com/" data-linkid="tqks0v">Dictionary.com</a>

所以我打算用 document.querySelectorAll("a[href='http://www.thesaurus.com']");document.querySelectorAll('[data-linkid=qxnxzj]');

select

我担心 selection 的后一种方法,以防数据-linked 被公司的 web 开发人员更改。

但是,最终,我仍然不确定如何实现它。我是监听 document 上的所有点击,还是只监听 <a> 标签等?最有效的方法是什么?


此外,如何在 ctrl+click 时在新选项卡中打开这些 link,或者在 shift+click 时在新选项卡中打开 window?目前,它在同一浏览器选项卡中打开 ctrl+clicked 和 shift+clicked links。

以下代码能够完全实现我问题中列出的所有目标:

// ==UserScript==
// @name         Restore links behavior at Thesaurus.com
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        *://www.thesaurus.com/*
// @match        *://www.dictionary.com/*
// @run-at       document-end
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    document.querySelectorAll('[data-linkid]').forEach(el => el.removeAttribute('data-linkid'));

    document.addEventListener('click', function(e) {
        var link = e.target.closest('a');
        //var link = e.target.closest('#content a'); // limit to the #content area
        var path = window.location.pathname; // /browse/myword

        if (link && link.getAttribute('href') != '#') {
            e.stopPropagation();
        }

        if (link && link.getAttribute('href') == 'http://www.thesaurus.com/') {
            link.setAttribute('href', 'http://www.thesaurus.com' + path);
        }
        else if (link && link.getAttribute('href') == 'http://www.dictionary.com/') {
            link.setAttribute('href', 'http://www.dictionary.com' + path);
        }
    }, true);

})();