override-missav-css/js

override missav css/js

Fra 19.12.2023. Se den seneste versjonen.

// ==UserScript==
// @name         override-missav-css/js
// @namespace    https://missav.com
// @version      2023-12-14
// @description  override missav css/js
// @author       You
// @match        https://missav.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=missav.com
// @grant        none
// ==/UserScript==

// 注入 css
const injectCss = () => {
    const css = `
    /* 你的全局CSS */
    .truncate {
       overflow: auto;
       text-overflow: auto;
       white-space: inherit;
    }
    `;

    const style = document.createElement("style");
    style.type = "text/css";
    style.appendChild(document.createTextNode(css));
    document.head.appendChild(style);
};

const onMouseEnter = () => {
    // 获取页面中所有拥有 .thumbnail 类的元素
    const thumbnails = document.querySelectorAll(".thumbnail");

    // 遍历所有的 .thumbnail 元素
    thumbnails.forEach(function (thumbnail) {
        // 在每个 .thumbnail 元素下找到符合条件的 a 元素
        const link = thumbnail.querySelector("div:first-child > a:last-child");

        if (link == null) {
            return;
        }

        // 检查 link 是否已经有监听器或者已经被触发过点击
        if (!link.hasAttribute("data-click-triggered")) {
            // 创建一个监听函数,它可以被解除绑定
            function hoverTriggerClick(event) {
                // 触发点击事件
                link.click();
                // 在触发点击后解除 mouseenter 事件监听
                link.removeEventListener("mouseenter", hoverTriggerClick);
            }

            // 标记 link 已添加事件监听器
            link.setAttribute("data-click-triggered", "true");
            // 为该 a 元素添加鼠标悬停的事件监听器
            link.addEventListener("mouseenter", hoverTriggerClick);
        }
    });
};


const onVideo = () => {
    // 获取页面中所有拥有 .thumbnail 类的元素
    const thumbnails = document.querySelectorAll(".thumbnail > div:first-child > a:first-child");

    // 遍历所有的 .thumbnail 元素
    thumbnails.forEach(function (thumbnail) {
        // 在每个 .thumbnail 元素下找到符合条件的 a 元素
        const video = thumbnail.querySelector("div:first-child > a:first-child > video");

        if (video == null) {
            return;
        }

        video.className = "preview";
        // const id = video.id.replace("preview-", "");
        // console.log(id, video.dataset.src);
        // video.src = video.dataset.src.replace("undefined", id);

        video.src = video.dataset.src;

        video.play();
    });
};

(function () {
    "use strict";

    injectCss();

    setTimeout(() => {
        const originalPause = window.player.pause;

        window.player.pause = function() {
            if (arguments.callee.caller == null) {
                originalPause.apply(this, arguments);
            }
        };

        onVideo();
    }, 1000);

    // onMouseEnter();

    // const observer = new MutationObserver(function (mutations) {
    //     mutations.forEach(function (mutation) {
    //         if (mutation.addedNodes.length > 0) {
    //             onMouseEnter();
    //         }
    //     });
    // });

    // observer.observe(document.body, {
    //     attributes: false,
    //     childList: true,
    //     subtree: true,
    // });
})();