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

Adds a button that add mylist to mylist page

当前为 2018-10-13 提交的版本,查看 最新版本

  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.12
  8. // @author masshiro
  9. // @match http://www.nicovideo.jp/mylist/*
  10. // @match https://www.nicovideo.jp/mylist/*
  11. // @grant none
  12. // ==/UserScript==
  13.  
  14. (function () {
  15. 'use strict';
  16.  
  17. var addButtons = function () {
  18. var span = document.createElement('span');
  19. span.style="color:#F00;text-decoration:underline;cursor:pointer";
  20. span.innerHTML="追加";
  21.  
  22. var a = document.createElement('a');
  23. a.className = "addmylist";
  24. a.appendChild(span);
  25.  
  26. a.addEventListener('click',function () {
  27. 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");
  28. },false);
  29.  
  30. Array.prototype.forEach.call(document.querySelectorAll(".SYS_box_item_buttons p"), function(item,i) {
  31. if(typeof item.querySelectorAll("a.addmylist")[0] === "undefined"){
  32. var as = a.cloneNode(true);
  33. as.addEventListener('click',function () {
  34. 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");
  35. },false);
  36. item.appendChild(as);
  37. }
  38. });
  39. };
  40.  
  41. // DOM変更で再実行
  42. // コピー元 (ありがとうございました)
  43. // https://greasyfork.org/ja/scripts/15271-extract-images-for-twitter
  44. (function () {
  45. var DOMObserverTimer = false;
  46. var DOMObserverConfig = {
  47. attributes: true,
  48. childList: true,
  49. subtree: true
  50. };
  51. var DOMObserver = new MutationObserver(function () {
  52. if (DOMObserverTimer !== 'false') {
  53. clearTimeout(DOMObserverTimer);
  54. }
  55. DOMObserverTimer = setTimeout(function () {
  56. DOMObserver.disconnect();
  57. addButtons();
  58. DOMObserver.observe(document.body, DOMObserverConfig);
  59. }, 100);
  60. });
  61. DOMObserver.observe(document.body, DOMObserverConfig);
  62. }) ();
  63.  
  64. })();