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

Adds a button that add mylist to mylist page

当前为 2019-01-02 提交的版本,查看 最新版本

  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. var DOMObserverTimer = false;
  41. var DOMObserverConfig = {
  42. attributes: true,
  43. childList: true,
  44. subtree: true
  45. };
  46. var DOMObserver = new MutationObserver(function () {
  47. if (DOMObserverTimer !== 'false') {
  48. clearTimeout(DOMObserverTimer);
  49. }
  50. DOMObserverTimer = setTimeout(function () {
  51. DOMObserver.disconnect();
  52. addButtons();
  53. DOMObserver.observe(document.body, DOMObserverConfig);
  54. }, 100);
  55. });
  56. DOMObserver.observe(document.body, DOMObserverConfig);
  57.  
  58. })();