NHK Only Names Furigana (fixed)

Turn off furigana on NHK easy, except for names

目前为 2025-03-12 提交的版本。查看 最新版本

// ==UserScript==
// @name         NHK Only Names Furigana (fixed)
// @version      1.2
// @description  Turn off furigana on NHK easy, except for names
// @author       Adrien Rault, Nathan Finch
// @include      https://www3.nhk.or.jp/news/easy/*
// @license      MIT
// @namespace    https://gf.qytechs.cn/users/754287
// ==/UserScript==

function toggleFuriganas(furiganas) {
  for (const furigana of furiganas) {
    furigana.hidden = !furigana.hidden
  }
}

function create(tag, params = {}) {
  const { attributes, content, events, style } = params

  const element = document.createElement(tag)
  if (attributes) {
    for (const [key, value] of Object.entries(attributes)) {
      element.setAttribute(key, value)
    }
  }

  if (style) {
    for (const [key, value] of Object.entries(style)) {
      element.style[key] = value
    }
  }

  if (events) {
    for (const [key, value] of Object.entries(events)) {
      element.addEventListener(key, value, false)
    }
  }

  if (content) {
    element.innerText = content
  }

  return element
}

const allFuriganas = Array.from(document.querySelectorAll('rt'))
const nameFuriganas = Array.from(document.querySelectorAll('.colorL rt, .colorN rt, .colorC rt'))
const otherFuriganas = allFuriganas.filter((furigana) => !nameFuriganas.includes(furigana))

const container = create('div', {
  style: {
    display: 'flex',
    'padding-top': '16px'
  }
})

const buttonStyle = {
  background: '#129E38',
  'font-size': '11px',
  padding: '8px 6px',
  'border-radius': '4px',
  outline: 'none',
  color: 'white',
  'font-weight': '700',
  border: 'none',
  'margin-right': '8px'
}

const toggleAllButton = create('button', {
  content: 'Toggle all furiganas',
  style: buttonStyle,
  events: {
    click() {
      toggleFuriganas(allFuriganas)
    }
  }
})

const toggleNameButton = create('button', {
  content: 'Toggle names furiganas',
  style: buttonStyle,
  events: {
    click() {
      toggleFuriganas(nameFuriganas)
    }
  }
})

const toggleOtherButton = create('button', {
  content: 'Toggle other furiganas',
  style: buttonStyle,
  events: {
    click() {
      toggleFuriganas(otherFuriganas)
    }
  }
})

container.appendChild(toggleAllButton);
container.appendChild(toggleNameButton)
container.appendChild(toggleOtherButton)
document.querySelector('div.article-info').append(container)

toggleFuriganas(otherFuriganas)

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址