// ==UserScript== // @name Add Nicopedia Menu // @namespace Add Nicopedia Menu // @description ニコニコ大百科の記事右側にメニューを追加します // @author sotoba // @match https://dic.nicovideo.jp/* // @version 0.0.4-20181103 // @homepageURL https://github.com/SotobatoNihu/AddNicopediaMenu // @license MIT License // @downloadURL none // ==/UserScript== //取り急ぎの実装なのでレイアウトはあとでちゃんとしたものを作ります const MENUID = 'nicopedia-menu' const drowMenu=(word,width)=>{ const modifyWord=word.replace(' ','_') const menuElem=document.getElementById(MENUID) menuElem.innerHTML=` ` /** * pikoplayerIsは大百科で通常読み込まれる関数 * pikoplayerIsを使い「ピコカキコ××を使う」の最初の表示を切り替える */ if (pikoplayerIs('flash')) { document.getElementById('use_flashpico').style.display='none' document.getElementById('use_htmlpico').style.display='block' } else { document.getElementById('use_flashpico').style.display='block' document.getElementById('use_htmlpico').style.display='none' } /** * 現在のレイアウトを元に「背景を××にする」の最初の表示を切り替える */ if(document.getElementById('header').style.backgroundRepeat===null){ document.getElementById('backgroud_mokume').style.display='none' document.getElementById('backgroud_default').style.display='block' }else{ document.getElementById('backgroud_mokume').style.display='block' document.getElementById('backgroud_default').style.display='none' } /** * CSSの変更を監視し * ヘッダーのメニューにある「背景を××にする」と設定を連動する */ const target = document.getElementById("maincss_ndx"); const observeOption = { attributes: true, attributeFilter: ['style'] }; const observer = new MutationObserver(mutations => { if(mutations[0].target.style.cssText.length > 0){ document.getElementById('backgroud_mokume').style.display='none' document.getElementById('backgroud_default').style.display='block' }else{ document.getElementById('backgroud_mokume').style.display='block' document.getElementById('backgroud_default').style.display='none' } }); observer.observe(target, observeOption); } // document.addEventListener('DOMContentLoaded', function () { window.onload = function () { //もしメニューがない場合は作成 if (document.getElementById(MENUID) === null) { const elm = document.createElement('div') elm.id = MENUID //右ペインの他メニューにクラスを合わせる elm.className='box' elm.style.height = 'auto' //空の要素を挿入 document.getElementById('right-column').insertAdjacentElement('afterbegin', elm) } //記事名を取得 const word = document.getElementById('search-box').value const width=document.getElementById('right-column').offsetWidth drowMenu(word,width) } // })