コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

利用者:Nanona15dobato/script/botreq.js/link.js

お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

多くの WindowsLinux のブラウザ

  • Ctrl を押しながら F5 を押す。

Mac における Safari

  • Shift を押しながら、更新ボタン をクリックする。

Mac における ChromeFirefox

  • Cmd Shift を押しながら R を押す。

詳細についてはWikipedia:キャッシュを消すをご覧ください。

const originalStyles = new Map();
const aTags = document.querySelectorAll('a');

function highlightLinks() {
    return new Promise((resolve) => {
        aTags.forEach(a => {
            originalStyles.set(a, a.style.cssText);
            a.style.backgroundColor = 'yellow';
            a.style.outline = '2px solid orange';
            a.addEventListener('mouseover', handleMouseOver);
            a.addEventListener('mouseout', handleMouseOut);
            a.addEventListener('click', handleClick);
        });

        document.addEventListener('click', function handleDocumentClick(event) {
            if (event.target.tagName.toLowerCase() === 'a') {
                resolve(handleClick(event));
            }
        });
    });
}

function handleMouseOver(event) {
    event.target.style.backgroundColor = 'lightblue';
}

function handleMouseOut(event) {
    event.target.style.backgroundColor = 'yellow';
}

function handleClick(event) {
    event.preventDefault();
    const url = event.target;
    let link;
    if (url.title){
        link = decodeURIComponent(url.href.match(
            /https?:\/\/...?\.wikipedia\.org(?:\/wiki\/([^?]+)|\/w\/index\.php\?title=([^?]+))/i
        )[1]);
    } else {
        link = url.href;
    }
    const text = event.target.textContent.trim();
    console.log(`リンク先: ${link}, 表示名: "${text}"`);
    resetLinks();
    return { link, text };
}

function resetLinks() {
    aTags.forEach(a => {
        a.style.cssText = originalStyles.get(a) || '';
        a.removeEventListener('mouseover', handleMouseOver);
        a.removeEventListener('mouseout', handleMouseOut);
        a.removeEventListener('click', handleClick);
    });
    originalStyles.clear();
}