GameFAQs main nav recombobulator

Takes the console list in the header and remakes it with your own chosen list of consoles.

目前為 2014-11-06 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name GameFAQs main nav recombobulator
  3. // @description Takes the console list in the header and remakes it with your own chosen list of consoles.
  4. // @author King of Cats
  5. // @namespace Cats
  6. // @version 3
  7. // @grant none
  8. // @include http://www.gamefaqs.com/*
  9. // ==/UserScript==
  10.  
  11. // Feel free to make changes and redistribute as long as you make it known you're distributing an edited version of this script.
  12.  
  13. var systemsNav = document.evaluate('//nav[@class="masthead_systems"]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
  14. var mainNav = document.evaluate('//div[contains(@class,"masthead_nav")]/nav', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
  15.  
  16. if (systemsNav !== null) {
  17.  
  18. /* Default values as an example */
  19. //var newNamesHeader = ["3DS","DS","iOS","PC","PS3","PS4","PSP","Vita","Wii U","Xbox 360","Xbox One"];
  20. //var newLinksHeader = ["3ds","ds","iphone","pc","ps3","ps4","psp","vita","wii-u","xbox360","xboxone"];
  21. //var newNamesDropdown = ["Android","Ouya","Arcade","PlayStation","Dreamcast","PlayStation 2","Game Boy Advance","Saturn","GameCube","Super Nintendo","Genesis","Wii","NES","Xbox","Nintendo 64","And 96 More..."]
  22. //var newLinksDropdown = ["android","ouya","arcade","ps","dreamcast","ps2","gba","saturn","gamecube","snes","genesis","wii","nes","xbox","n64","systems.html"]
  23. //var newNamesMainNav = ["Answers","Boards","Contribute","Features","Users","What's New"];
  24. //var newLinksMainNav = ["features/qna/index.php","boards","contribute/","features/","users/","new/"];
  25. //var newDropdownTitle = "More Systems"
  26. /* Custom entries */
  27. var newNamesHeader = ["","",""];
  28. var newLinksHeader = ["","",""];
  29. var newNamesDropdown = ["","",""];
  30. var newLinksDropdown = ["","",""];
  31. var newNamesMainNav = ["","",""];
  32. var newLinksMainNav = ["","",""];
  33. var newDropdownTitle = "";
  34. // false, remove dropdown. true, edit dropdown.
  35. var keepDropdown = true;
  36.  
  37. var newAnchorsHeader = new Array();
  38. var newAnchorsDropdown = new Array();
  39. var newListItemsDropdown = new Array();
  40. var newAnchorsMainNav = new Array();
  41. var moreSystems = document.evaluate('//span[@class="masthead_platform_drop"]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
  42. var headerLinks = systemsNav.getElementsByTagName("a");
  43. for (var i = headerLinks.length-1; i >= 0; i--) {
  44. if (headerLinks[i].parentNode == systemsNav) {
  45. headerLinks[i].parentNode.removeChild(headerLinks[i]);
  46. }
  47. }
  48. for (var i = 0; i < newNamesHeader.length; i++) {
  49. newAnchorsHeader[i] = document.createElement('a');
  50. newAnchorsHeader[i].setAttribute('href', '/'+newLinksHeader[i]);
  51. newAnchorsHeader[i].textContent = newNamesHeader[i];
  52. systemsNav.insertBefore(newAnchorsHeader[i],moreSystems);
  53. }
  54. if (keepDropdown) {
  55. var dropdownContainer = moreSystems.getElementsByTagName("ul")[0];
  56. var dropdownLinks = moreSystems.getElementsByTagName("li");
  57. moreSystems.getElementsByTagName("a")[0].childNodes[0].textContent = newDropdownTitle+" ";
  58. for (var i = dropdownLinks.length-1; i >= 0; i--) {
  59. dropdownLinks[i].parentNode.removeChild(dropdownLinks[i]);
  60. }
  61. for (var i = 0; i < newNamesDropdown.length; i++) {
  62. newListItemsDropdown[i] = document.createElement('li');
  63. newListItemsDropdown[i].setAttribute('class', 'masthead_platform_subnav_item');
  64. newAnchorsDropdown[i] = document.createElement('a');
  65. newAnchorsDropdown[i].setAttribute('href', '/'+newLinksDropdown[i]);
  66. newAnchorsDropdown[i].textContent = newNamesDropdown[i];
  67. dropdownContainer.appendChild(newListItemsDropdown[i]);
  68. newListItemsDropdown[i].appendChild(newAnchorsDropdown[i]);
  69. }
  70. } else {
  71. moreSystems.parentNode.removeChild(moreSystems);
  72. }
  73. while (mainNav.firstChild) {
  74. mainNav.removeChild(mainNav.firstChild);
  75. }
  76. for (var i = 0; i < newNamesMainNav.length; i++) {
  77. newAnchorsMainNav[i] = document.createElement('a');
  78. newAnchorsMainNav[i].setAttribute('href', '/'+newLinksMainNav[i]);
  79. newAnchorsMainNav[i].textContent = newNamesMainNav[i];
  80. mainNav.appendChild(newAnchorsMainNav[i]);
  81. }
  82. }