[niconico video] Adds a botton that add mylist to mylist page

Adds a button that add mylist to mylist page

当前为 2017-03-15 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name [niconico video] Adds a botton that add mylist to mylist page
  3. // @name:ja [ニコニコ動画] マイリストページからマイリストするボタンを追加
  4. // @description Adds a button that add mylist to mylist page
  5. // @description:ja マイリストページからマイリストするボタンを追加
  6. // @namespace masshiro.wpblog.jp
  7. // @version 0.11
  8. // @author masshiro
  9. // @match http://www.nicovideo.jp/mylist/*
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. (function () {
  14. 'use strict';
  15.  
  16. var addButtons = function () {
  17. var span = document.createElement('span');
  18. span.style="color:#F00;text-decoration:underline;cursor:pointer";
  19. span.innerHTML="追加";
  20.  
  21. var a = document.createElement('a');
  22. a.className = "addmylist";
  23. a.appendChild(span);
  24.  
  25. a.addEventListener('click',function () {
  26. window.open("http://www.nicovideo.jp/mylist_add/video/" + encodeURIComponent(document.querySelectorAll(".SYS_box_item")[0].querySelectorAll("a")[0].getAttribute("href").replace("watch/","")), "nicomylistadd", "width=500, height=400, menubar=no, scrollbars=no");
  27. },false);
  28.  
  29. Array.prototype.forEach.call(document.querySelectorAll(".SYS_box_item_buttons p"), function(item,i) {
  30. if(typeof item.querySelectorAll("a.addmylist")[0] === "undefined"){
  31. var as = a.cloneNode(true);
  32. as.addEventListener('click',function () {
  33. window.open("http://www.nicovideo.jp/mylist_add/video/" + encodeURIComponent(document.querySelectorAll(".SYS_box_item")[i].querySelectorAll("a")[0].getAttribute("href").replace("watch/","")), "nicomylistadd", "width=500, height=400, menubar=no, scrollbars=no");
  34. },false);
  35. item.appendChild(as);
  36. }
  37. });
  38. };
  39.  
  40. // DOM変更で再実行
  41. // コピー元 (ありがとうございました)
  42. // https://greasyfork.org/ja/scripts/15271-extract-images-for-twitter
  43. (function () {
  44. var DOMObserverTimer = false;
  45. var DOMObserverConfig = {
  46. attributes: true,
  47. childList: true,
  48. subtree: true
  49. };
  50. var DOMObserver = new MutationObserver(function () {
  51. if (DOMObserverTimer !== 'false') {
  52. clearTimeout(DOMObserverTimer);
  53. }
  54. DOMObserverTimer = setTimeout(function () {
  55. DOMObserver.disconnect();
  56. addButtons();
  57. DOMObserver.observe(document.body, DOMObserverConfig);
  58. }, 100);
  59. });
  60. DOMObserver.observe(document.body, DOMObserverConfig);
  61. }) ();
  62.  
  63. })();