override missav css/js
当前为
// ==UserScript==
// @name override-missav-css/js
// @namespace https://missav.com
// @version v0.0.1
// @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);
}
};
}, 1000);
setTimeout(() => {
onVideo();
}, 2000);
// onMouseEnter();
const observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
if (mutation.addedNodes.length > 0) {
// onMouseEnter();
onVideo();
}
});
});
observer.observe(document.body, {
attributes: false,
childList: true,
subtree: true,
});
})();