您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
ニコニ広告設定窓の表示物制御
当前为
// ==UserScript== // @name [NikoAd] simplizer // @namespace http://tampermonkey.net/ // @version 2024-12-07 // @description ニコニ広告設定窓の表示物制御 // @author anonymous // @match https://nicoad.nicovideo.jp/video/publish/* // @icon https://www.google.com/s2/favicons?sz=64&domain=nicovideo.jp // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; const collapse_settings = [ { id: 'header-bar', def_value:true }, { id: 'conductor', def_value:true }, { id: 'secondary-content-info', def_value:true }, { id: 'entry-basic-info', def_value:true }, { id: 'entry-thanks', def_value:true }, { id: 'frame-grade-visualizer', def_value:true }, { id: 'nicoad-impact', def_value:true }, { id: 'campaign-info', def_value:true }, ]; const SHRINK_SETTING_ID = "shrink"; const REPLACE_PUBLISH_BUTTON_SETTING_ID = "replace_publish_button"; function saveValueToStorage(id, value) { //console.debug(`save ${id} : ${value}` ); localStorage.setItem(id, value); } function loadValueFromStorage(id, def_value) { const value = localStorage.getItem(id); if((value === undefined) || (value === null)){ return def_value.toString(); } //console.debug(`load ${id} : ${value}` ); return value; } function stringToBool(str) { return str.toLowerCase() === 'true'; } // ------------------------------------------------------------------------------------------------------ // ドロップダウンメニューをページの最下段に追加する関数を定義 function addDropdownMenuToBottom() { // メニューのコンテナを作成 const menuContainer = document.createElement('div'); menuContainer.className = 'bottom-menu-container'; // スタイルプロパティに直値を代入 menuContainer.style.position = 'fixed'; menuContainer.style.bottom = '4px'; menuContainer.style.left = '14x'; menuContainer.style.backgroundColor = 'white'; menuContainer.style.border = '1px solid #ccc'; menuContainer.style.padding = '4px'; menuContainer.style.zIndex = '1000'; // メニューの内容を作成 const menuContent = document.createElement('div'); menuContent.id = 'menuContent'; menuContent.style.display = 'none'; // 初期状態は非表示 menuContent.style.position = 'absolute'; menuContent.style.bottom = '24px'; menuContent.style.left = '4px'; menuContent.style.backgroundColor = '#f9f9f9'; menuContent.style.boxShadow = '0px 8px 16px 0px rgba(0,0,0,0.2)'; menuContent.style.zIndex = '1001'; menuContent.style.width = '300px'; // メニューの幅を設定 function createCheckBoxContainer(id, text, checked, onchange){ const checkboxContainer = document.createElement('div'); const checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.id = "cbx_" + id; checkbox.checked = checked; // チェック状態の保存 checkbox.addEventListener('change', function(){ saveValueToStorage(id, checkbox.checked); } ); // 外部指定のアクション if(onchange){ checkbox.addEventListener('change', function(){ onchange(checkbox); } ); } const label = document.createElement('label'); label.htmlFor = checkbox.id; label.appendChild(document.createTextNode(text)); checkboxContainer.appendChild(checkbox); checkboxContainer.appendChild(label); return checkboxContainer; } // 項目別の表示非表示 collapse_settings.forEach((item) => { const checked = stringToBool(loadValueFromStorage(item.id, item.def_value)); let visible_func = function(checkbox){ let elements = getElements(item.id); Array.from(elements).forEach((elm)=>{ elm.style.display = checkbox.checked ? "block" : "none"; }); } let container = createCheckBoxContainer(item.id, item.id, checked, visible_func); menuContent.appendChild(container); }); { const horizontalRule = document.createElement('hr'); menuContent.appendChild(horizontalRule); } // 圧縮 { const id = SHRINK_SETTING_ID; const checked = stringToBool(loadValueFromStorage(id, true)); let text = "隙間を詰める(要リロード)"; let container = createCheckBoxContainer(id, text, checked); menuContent.appendChild(container); } // ボタン上下入れ替え { const id = REPLACE_PUBLISH_BUTTON_SETTING_ID; const checked = stringToBool(loadValueFromStorage(id, true)); let text = "決定ボタンを上に移動(要リロード)"; let container = createCheckBoxContainer(id, text, checked); menuContent.appendChild(container); } // メニューボタンを作成 { const menuButton = document.createElement('button'); menuButton.innerText = '表示編集'; menuButton.onclick = function() { menuContent.style.display = menuContent.style.display === 'block' ? 'none' : 'block'; }; // コンテナにボタンとメニューの内容を追加 menuContainer.appendChild(menuButton); } menuContainer.appendChild(menuContent); // コンテナをボディに追加 document.body.appendChild(menuContainer); } // ドロップダウンメニューを追加する関数を呼び出し addDropdownMenuToBottom(); // ------------------------------------------------------------------------------------------------------ // 項目の非表示処理 // ------------------------------------------------------------------------------------------------------ function waitForElement(elementName, callback) { return new Promise((resolve, reject) => { console.debug(elementName + " wait..."); var interval = setInterval(function() { var elements = getElements(elementName); if (elements && elements.length > 0) { Array.from(elements).forEach((elm)=>{ callback(elm); // 要素をコールバック関数に渡す }); clearInterval(interval); resolve(); console.debug(elementName + " done."); } else { //console.log(elementName + " still not found"); } }, 100); // ミリ秒ごとにチェック }); } function getElementsById(id) { var element = document.getElementById(id); return element ? [element] : []; // 配列として返すことで、他のセレクタ関数と形式を揃える } function getElementsByClassName(className) { return document.getElementsByClassName(className); } function getElements(key){ let elements = getElementsByClassName(key); if(elements.length > 0){ return elements; } return getElementsById(key); } function collapseElement(element){ element.style.display = "none"; } function shrinkElement(element){ element.style.minHeight = "0vh"; element.style.padding = "0px"; } function replaceElementToFirst(element){ let parent = element.parentElement; parent.insertBefore(element, parent.firstChild); } async function simplize(){ { const value = stringToBool(loadValueFromStorage(SHRINK_SETTING_ID, true)); if(value){ await waitForElement("next", collapseElement); await waitForElement("wrapper", shrinkElement); await waitForElement("heading", collapseElement); } } collapse_settings.forEach((item) => { const value = stringToBool(loadValueFromStorage(item.id, item.def_value)); if(!value){ waitForElement(item.id, collapseElement); } }); { const value = stringToBool(loadValueFromStorage(REPLACE_PUBLISH_BUTTON_SETTING_ID, true)); if(value){ waitForElement("publish-button", replaceElementToFirst); } } } simplize(); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址