您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
マウスのボタン+ホイールで、どこでも音量調整 for ニコニコ動画とYouTube
- // ==UserScript==
- // @name NicoWheelVolume
- // @namespace https://github.com/segabito/
- // @description マウスのボタン+ホイールで、どこでも音量調整 for ニコニコ動画とYouTube
- // @include http://www.nicovideo.jp/watch/*
- // @include http://www.youtube.com/watch*
- // @include https://www.youtube.com/watch*
- // @version 1.1.1
- // @grant none
- // ==/UserScript==
- // * ver 1.1.1
- // - https://~ 追加
- // * ver 1.1.0
- // - 便利だったのでYouTubeにも対応した
- // TODO: Chrome対応
- (function(window) {
- var document = window.document;
- var monkey = function() {
- var player = null;
- function getPlayer() {
- if (player) return player;
- if (window.WatchApp) {
- return player = document.getElementById('external_nicoplayer');
- } else
- if (window.yt) {
- return player = document.getElementById('movie_player');
- } else {
- return player = document.getElementById('flvplayer');
- }
- }
- function getSiteType() {
- if (location.host.indexOf('nicovideo') >= 0) {
- return 'niconico';
- } else {
- return 'youtube';
- }
- }
- function volume(v) {
- var site = getSiteType(), player = getPlayer();
- if (!player) return;
- if (site === 'niconico') {
- if (typeof v === 'number') {
- player.ext_setVolume(Math.max(0, Math.min(v * 1, 100)));
- }
- return player.ext_getVolume();
- } else {
- if (typeof v === 'number') {
- player.setVolume(Math.max(0, Math.min(v * 1, 100)));
- }
- return player.getVolume();
- }
- }
- var isChanged = false;
- document.body.addEventListener('wheel', function(e) {
- if (typeof e.buttons === 'number') {
- if (e.buttons < 1) return;
- } else {
- return;
- }
- // なんで固定値じゃなくて比率で増減するの?について
- //
- // 投稿動画は動画ごとの音量が統一されていないため、
- // 音量最大付近でもよく聞こえない動画もあれば、音量最小付近でもうるさい動画もある。
- // 固定値による増減だと、後者の音量を調節しづらいので、現在値からの比率で増減させる。
- //
- //
- // なんで音量アップと音量ダウンの比率が異なるの?について
- //
- // 音量を下げる時は「うわっ音でけぇ!」
- // 音量を上げる時は「ちょっと上げようかな?」
- // という場面が多いので、下げる速度のほうが速い。
- // (とはいえ、これが最適だ!という比率を計算したわけではない。適当)
- //
- var v = volume(), delta = e.deltaY * -1;
- isChanged = true;
- if (delta > 0) {
- v = Math.max(v, 1);
- r = (v < 5) ? 1.3 : 1.1;
- v = volume(v * r);
- } else {
- v = volume(Math.floor(v / 1.2));
- }
- e.preventDefault();
- }, false);
- document.body.addEventListener('contextmenu', function (e) {
- if (isChanged) {
- e.preventDefault();
- }
- isChanged = false;
- }, false);
- };
- var script = document.createElement("script");
- script.setAttribute("type", "text/javascript");
- script.appendChild(document.createTextNode("(" + monkey + ")()"));
- document.body.appendChild(script);
- })(unsafeWindow || window);