Greasy Fork

Greasy Fork is available in English.

douban auto-link

auto link for douban

目前为 2018-07-17 提交的版本,查看 最新版本

// ==UserScript==
// @name         douban auto-link
// @namespace    http://tampermonkey.net/
// @version      0.4
// @description  auto link for douban
// @author       yetone
// @match        https://*.douban.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
    document.querySelectorAll('p, blockquote, span, .short-content, .review-content').forEach(p => {
        let nodes = [];
        let need = false;
        p.childNodes.forEach(x => {
            if (x.nodeType !== 3) {
                nodes.push(x);
                return;
            }
            let text = x.textContent;
            let lastIdx = 0;
            text.replace(/《.+?》|「.+?」|『.+?』/g, (c, idx, t) => {
                need = true;
                nodes.push(new Text(t.substring(lastIdx, idx + 1)));
                lastIdx = idx + c.length - 1;
                let a = document.createElement('a');
                let cc = t.substring(idx + 1, idx + c.length - 1);
                a.href = `https://www.douban.com/search?q=${encodeURIComponent(cc)}`;
                a.target = '_blank';
                a.innerText = cc;
                nodes.push(a);
            });
            nodes.push(new Text(text.substring(lastIdx)));
        });
        if (need) {
            while (p.childNodes.length > 0) {
                p.childNodes.forEach(x => {
                    p.removeChild(x);
                });
            }
            nodes.forEach(x => {
                p.appendChild(x);
            });
        }
    });
})();