Greasy Fork is available in English.

扇贝阅读单词自动发音

文章阅读页面,点击单词显示释义的同时自动发音该单词

// ==UserScript==
// @name         扇贝阅读单词自动发音
// @namespace    http://tampermonkey.net/
// @version      2024-05-17
// @description  文章阅读页面,点击单词显示释义的同时自动发音该单词
// @author       CTRN43062
// @match        https://web.shanbay.com/reading/web-news/articles/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=shanbay.com
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';
    let wordCardObs = null;
    const metaInfo = document.querySelector('.meta-info')

    // Your code here...
    const obs = new MutationObserver((mutationsList) => {
        for(const m of mutationsList) {
            if(m.type === 'childList') {
                const { addedNodes, removedNodes } = m

                if(addedNodes.length === 1 && addedNodes[0].className === 'word-card') {
                    const wordCard = addedNodes[0]
                    wordCard.querySelector('.volume').click()

                    wordCardObs = new MutationObserver((mutationList) => {
                      for(const m of mutationList) {
                        if(m.type === 'attributes') {
                          setTimeout(() => metaInfo.querySelector('.volume').click(), 200)
                        }
                      }
                    })

                    wordCardObs.observe(wordCard, { 'attributes': true })
                } else if (removedNodes.length === 1 && removedNodes[0].className === 'word-card' && wordCardObs) {
                   wordCardObs.disconnect()
                }
            }
        }
    })

    obs.observe(metaInfo, { childList: true, subtree:true})
})();