# nlフィルタ定義(文字コード判定用なのでこの行は削除しないこと)
# 2017/04/29
# 2017/05/03 stopPropagation

[Script]
Name = ホイールスクロールで音量調整(watchページ HTML5)
URL = www\.nicovideo\.jp/watch/
Require = "js-initial-watch-data"
Append<
window.addEventListener("load", function() {
// 設定: プレイヤーにフォーカスがないときは普通にスクロールするかどうか
//   プレイヤーにフォーカスがないときにもプレイヤー上でホイールを回すだけで
//   操作できるようにしたい場合はfalseにしてください．
var onlyDuringFocused = true;

var onScrollUp = function(ret) {
    // 上にスクロール -> ↑キーでvolume up
    ret.keycode = 0x26;
    ret.key = "ArrowUp";
};
var onScrollDown = function(ret) {
    // 下にスクロール -> ↓キーでvolume down
    ret.keycode = 0x28;
    ret.key = "ArrowDown";
};

var wheelevent;
if ("onwheel" in document.createElement("div")) {
  wheelevent = "wheel"; // Chrome, Firefox, Edge
} else {
  wheelevent = "mousewheel"; // IE
}
var playerContainer = document.getElementsByClassName("PlayerContainer")[0];
playerContainer.addEventListener(wheelevent, function(e) {
  if (onlyDuringFocused && !playerContainer.contains(document.activeElement))
    return;
  
  e.stopPropagation();
  e.preventDefault();
  var t = {};
  if (e.deltaY !== undefined && e.deltaY < 0 // Chrome, Firefox, Edge
   || e.wheelDelta !== undefined && e.wheelDelta > 0 // IE
   ) {
    onScrollUp(t);
  } else {
    onScrollDown(t);
  }
  var event;
  if (typeof KeyboardEvent === "function") {
    // Chrome, Firefox, Edge
    event = new KeyboardEvent("keydown", {bubbles: true, key: t.key, keyCode: t.keycode, which: t.keycode});
  } else {
    // IE
    event = document.createEvent("KeyboardEvent");
    event.initKeyboardEvent("keydown", true, false, window, t.key, 0, "", false, ""); 
  }
  // Chrome, IE Hack: http://stackoverflow.com/questions/10455626/keydown-simulation-in-chrome-fires-normally-but-not-the-correct-key
  Object.defineProperty(event, 'keyCode', { get: function() { return t.keycode; } });
  Object.defineProperty(event, 'which', { get: function() { return t.keycode; } });
  this.dispatchEvent(event);
}); });
>

