popupTitleOverAnchorsOnH-NEXT

H-NEXTで作品のリンクにフルタイトルをポップアップ

/* jshint esversion: 6 */
// ==UserScript==
// @name         popupTitleOverAnchorsOnH-NEXT
// @namespace    https://greasyfork.org/ja/users/289387-unagionunagi
// @version      0.5.1
// @description  H-NEXTで作品のリンクにフルタイトルをポップアップ
// @author       unagiOnUnagi
// @match        *://*.hnext.jp/*
// @grant        none
// @license      GPL-2.0-or-later
// ==/UserScript==

function addTitles(root=document) {
    // タイトルを設定
    const items = root.querySelectorAll(
        '.ui-item-a__link:not([title]),.rnk-item__link:not([title]),.TitleCard__StyledLink-sc-3lhig5-0:not([title])');
    if (!items) {
        console.log('No items found on H-NEXT');
        return;
    }
    for (let item of items) {
        // console.log(item);
        let titleEl = item.querySelector('.ui-item-a__catch,.rnk-item__text,.TItleName__Title-sc-j7jo8x-1');
        if (titleEl) {
            item.title = titleEl.textContent.trim();
        }
    }
}

(function() {

    if (document.URL.includes('video.hnext.jp/title/')) {
        let titleEl = document.querySelector('.ttl-subinfo__text');
        if (!titleEl.title) {
            titleEl.title = titleEl.textContent.trim();
        } else {
            console.log('The attr title is already set.');
        }
        return;
    }

    addTitles();

    const observer = new MutationObserver(mutations => {
        for (let mutation of mutations) {
            // console.log(mutation.target);
            addTitles(mutation.target);
        }
    });
    observer.observe(document.body, { childList: true, subtree: true });

})();