GameFAQs Colored Text Renderer

This script translates <red>, <blue>, <gold>, <green>, <mauve>, <salmonpink>, and <orange> tags into GameFAQs friendly HTML tags, and accordingly renders messages into the aforementioned colors.

目前为 2015-10-28 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name GameFAQs Colored Text Renderer
  3. // @description This script translates <red>, <blue>, <gold>, <green>, <mauve>, <salmonpink>, and <orange> tags into GameFAQs friendly HTML tags, and accordingly renders messages into the aforementioned colors.
  4. // @namespace http://thelolilulelo.wordpress.com/
  5. // @grant GM_addStyle
  6. // @include http://www.gamefaqs.com/boards/*
  7. // @exclude http://www.gamefaqs.com/boards/user.php*
  8. // @exclude http://www.gamefaqs.com/boards/sigquote.php*
  9. // @version 1.1
  10. // ==/UserScript==
  11.  
  12. GM_addStyle ( " \
  13. @font-face {font-family: MadokaRunes; src: url('https://dl.dropboxusercontent.com/u/42167128/MadokaRunes.ttf');} \
  14. " );
  15.  
  16. GM_addStyle ( " \
  17. @font-face {font-family: ComicSans; src: url('https://dl.dropboxusercontent.com/u/42167128/comic.ttf');} \
  18. " );
  19.  
  20. GM_addStyle ( " \
  21. @font-face {font-family: Papyrus; src: url('https://dl.dropboxusercontent.com/u/42167128/papyrus.ttf');} \
  22. " );
  23.  
  24.  
  25. var CONST = {NEW:'Post Message', PREV:'Preview Message', PREVS:'Preview and Spellcheck Message', EDIT:'Save Changes'};
  26. var BTN_ID = {RED:'btnRed', BLUE:'btnBlue', GOLD:'btnGold', GREEN:'btnGreen', MAUVE:'btnMauve', PINK:'btnPink', ORANGE:'btnOrange', UNDERLINE:'btnUnderline', STRIKEOUT:'btnStrikeout', SMALL:'btnSmall', BIG:'btnBig'};
  27.  
  28. if (document.getElementsByTagName('textarea').length != 0) {
  29. document.addEventListener('click', eventListener, true);
  30. btnRed = document.createElement("input");
  31. btnRed.setAttribute("tabindex", "-1")
  32. btnRed.setAttribute("id", BTN_ID.RED);
  33. btnRed.setAttribute("value", "Red");
  34. btnRed.setAttribute("type", "button");
  35. btnBlue = document.createElement("input");
  36. btnBlue.setAttribute("tabindex", "-1")
  37. btnBlue.setAttribute("id", BTN_ID.BLUE);
  38. btnBlue.setAttribute("value", "Blue");
  39. btnBlue.setAttribute("type", "button");
  40. btnGreen = document.createElement("input");
  41. btnGreen.setAttribute("tabindex", "-1")
  42. btnGreen.setAttribute("id", BTN_ID.GREEN);
  43. btnGreen.setAttribute("value", "Green");
  44. btnGreen.setAttribute("type", "button");
  45. btnGold = document.createElement("input");
  46. btnGold.setAttribute("tabindex", "-1")
  47. btnGold.setAttribute("id", BTN_ID.GOLD);
  48. btnGold.setAttribute("value", "Gold");
  49. btnGold.setAttribute("type", "button");
  50. btnMauve = document.createElement("input");
  51. btnMauve.setAttribute("tabindex", "-1")
  52. btnMauve.setAttribute("id", BTN_ID.MAUVE);
  53. btnMauve.setAttribute("value", "Mauve");
  54. btnMauve.setAttribute("type", "button");
  55. btnPink = document.createElement("input");
  56. btnPink.setAttribute("tabindex", "-1")
  57. btnPink.setAttribute("id", BTN_ID.PINK);
  58. btnPink.setAttribute("value", "Pink");
  59. btnPink.setAttribute("type", "button");
  60. btnOrange = document.createElement("input");
  61. btnOrange.setAttribute("tabindex", "-1")
  62. btnOrange.setAttribute("id", BTN_ID.ORANGE);
  63. btnOrange.setAttribute("value", "Orange");
  64. btnOrange.setAttribute("type", "button");
  65. btnUnderline = document.createElement("input");
  66. btnUnderline.setAttribute("tabindex", "-1")
  67. btnUnderline.setAttribute("id", BTN_ID.UNDERLINE);
  68. btnUnderline.setAttribute("value", "Underline");
  69. btnUnderline.setAttribute("type", "button");
  70. btnStrikeout = document.createElement("input");
  71. btnStrikeout.setAttribute("tabindex", "-1")
  72. btnStrikeout.setAttribute("id", BTN_ID.STRIKEOUT);
  73. btnStrikeout.setAttribute("value", "Strike");
  74. btnStrikeout.setAttribute("type", "button");
  75. btnSmall = document.createElement("input");
  76. btnSmall.setAttribute("tabindex", "-1")
  77. btnSmall.setAttribute("id", BTN_ID.SMALL);
  78. btnSmall.setAttribute("value", "Small");
  79. btnSmall.setAttribute("type", "button");
  80. btnBig = document.createElement("input");
  81. btnBig.setAttribute("tabindex", "-1")
  82. btnBig.setAttribute("id", BTN_ID.BIG);
  83. btnBig.setAttribute("value", "Big");
  84. btnBig.setAttribute("type", "button");
  85. if (document.getElementsByName('gamefox-quickpost-normal').length != 0) {
  86. var elemParent = document.getElementsByName('gamefox-quickpost-normal')[0];
  87. elemParent.insertBefore(btnRed, elemParent.childNodes[0]);
  88. //elemParent.childNodes[0].appendChild(btnRed);
  89. } else {
  90. var elemParent = document.getElementsByTagName('textarea')[0];
  91. elemParent.parentNode.parentNode.insertBefore(btnRed, elemParent.parentNode);
  92. }
  93. btnRed.parentNode.insertBefore(btnBlue, btnRed.nextSibling);
  94. btnBlue.parentNode.insertBefore(btnGreen, btnBlue.nextSibling);
  95. btnGreen.parentNode.insertBefore(btnMauve, btnGreen.nextSibling);
  96. btnMauve.parentNode.insertBefore(btnPink, btnMauve.nextSibling);
  97. btnPink.parentNode.insertBefore(btnGold, btnPink.nextSibling);
  98. btnGold.parentNode.insertBefore(btnOrange, btnGold.nextSibling);
  99. btnOrange.parentNode.insertBefore(btnUnderline, btnOrange.nextSibling);
  100. btnUnderline.parentNode.insertBefore(btnStrikeout, btnUnderline.nextSibling);
  101. btnStrikeout.parentNode.insertBefore(btnSmall, btnStrikeout.nextSibling);
  102. btnSmall.parentNode.insertBefore(btnBig, btnSmall.nextSibling);
  103. btnGold.parentNode.insertBefore(btnOrange, btnGold.nextSibling);
  104. btnBig.appendChild(document.createElement("br"));
  105. }
  106.  
  107. renderColors();
  108.  
  109. function eventListener(event) {
  110. var elemVal = event.target.value;
  111. if (elemVal == CONST.NEW || elemVal == CONST.PREV || elemVal == CONST.PREVS || elemVal == CONST.EDIT) {
  112. var text = document.getElementsByTagName('textarea')[0].value;
  113. //red
  114. text = text.replace(/<red>/gi, '<i><b><b><code></code></b></b></i>').replace(/<\/font>/gi, '<code><i><code></code></i></code>');
  115. //blue
  116. text = text.replace(/<blue>/gi, '<b><b><b><code></code></b></b></b>');
  117. //gold
  118. text = text.replace(/<gold>/gi, '<b><b><i><code></code></i></b></b>');
  119. //green
  120. text = text.replace(/<green>/gi, '<b><i><i><code></code></i></i></b>');
  121. //mauve
  122. text = text.replace(/<mauve>/gi, '<i><i><b><code></code></b></i></i>');
  123. //salmonpink
  124. text = text.replace(/<salmonpink>/gi, '<i><i><i><code></code></i></i></i>');
  125. //orange
  126. text = text.replace(/<orange>/gi, '<b><code><i><i><code></code></i></i></code></b>');
  127. //contract
  128. text = text.replace(/<contract>/gi, '<i><code><i><i><code></code></i></i></code></i>');
  129. //AOEKnight
  130. text = text.replace(/<aoeknight>/gi, '<code><b><i></i></b></code>');
  131. //rennyf1
  132. text = text.replace(/<rennyf1>/gi, '<b><i><\/i><\/b>');
  133. //yaranaika
  134. text = text.replace(/<yaranaika>/gi, '<i><b><\/b><\/i>');
  135. //conwayshrug
  136. text = text.replace(/<conwayshrug>/gi, '<code><b><\/b><\/code>');
  137. //conwayfacepalm
  138. text = text.replace(/<conwayfacepalm>/gi, '<b><code><b><\/b><\/code><\/b>');
  139. //papyrus font
  140. text = text.replace(/<papyrusfont>/gi, '<b><code><i><\/i><\/code><\/b>');
  141. //papyrus emote
  142. text = text.replace(/<papyrus>/gi, '<i><code><b><\/b><\/code><\/i>');
  143. //sans emote
  144. text = text.replace(/<sans>/gi, '<i><code><i><\/i><\/code><\/i>');
  145. //tobdog
  146. text = text.replace(/<tobdog>/gi, '<code><b><b><\/b><\/b><\/code>');
  147. //happycrank
  148. text = text.replace(/<happycrank>/gi, '<code><i><b><\/b><\/i><\/code>');
  149. //Comic Sans MS
  150. text = text.replace(/<comicsans>/gi, ' <b><code><b><i><code></code></i></b></code></b>');
  151. //Marquee
  152. text = text.replace(/<marquee>/gi, '<code><code><b><code></code></b></code></code>').replace(/<\/marquee>/gi, '<code><code><code><b><i><code></code></i></b></code></code></code>');
  153. //Underline
  154. text = text.replace(/<u>/gi, '<code><code><i><code></code></i></code></code>').replace(/<\/u>/gi, '<code><code><code><b><code></code></b></code></code></code>');
  155. //Strikeout
  156. text = text.replace(/<strike>/gi, '<i><code><i><b><code></code></b></i></code></i>').replace(/<\/strike>/gi, '<code><code><code><i><code></code></i></code></code></code>');
  157. //Small Font
  158. text = text.replace(/<small>/gi, '<i><code><b><b><code></code></b></b></code></i>');
  159. //Big Font
  160. text = text.replace(/<big>/gi, '<b><code><b><b><code></code></b></b></code></b>');
  161. //DINOSAUR
  162. text = text.replace(/<dinosaur>/gi, '<b><code><i><b><code></code></b></i></code></b>');
  163. //EDIT Comic Sans MS
  164. text = text.replace(/<b><code><b><i><\/i><\/b><\/code><\/b>/gi, '<b><code><b><i><code></code></i></b></code></b>');
  165. //EDIT Red
  166. text = text.replace(/<i><b><b><\/b><\/b><\/i>/gi, '<i><b><b><code></code></b></b></i>');
  167. //EDIT Blue
  168. text = text.replace(/<b><b><b><\/b><\/b><\/b>/gi, '<b><b><b><code></code></b></b></b>');
  169. //EDIT Gold
  170. text = text.replace(/<b><b><i><\/i><\/b><\/b>/gi, '<b><b><i><code></code></i></b></b>');
  171. //EDIT Green
  172. text = text.replace(/<b><i><i><\/i><\/i><\/b>/gi, '<b><i><i><code></code></i></i></b>');
  173. //EDIT Mauve
  174. text = text.replace(/<i><i><b><\/b><\/i><\/i>/gi, '<i><i><b><code></code></b></i></i>');
  175. //EDIT Salmon Pink
  176. text = text.replace(/<i><i><i><\/i><\/i><\/i>/gi, '<i><i><i><code></code></i></i></i>');
  177. //EDIT Orange
  178. text = text.replace(/<b><code><i><i><\/i><\/i><\/code><\/b>/gi, '<b><code><i><i><code></code></i></i></code></b>');
  179. //EDIT Madoka Font
  180. text = text.replace(/<i><code><i><i><\/i><\/i><\/code><\/i>/gi, '<i><code><i><i><code></code></i></i></code></i>').replace(/<code><i><\/i><\/code>/gi, '<code><i><code></code></i></code>');
  181. //EDIT AOEKnight
  182. text = text.replace(/<code><b><i><\/i><\/b><\/code>/gi, '<code><b><i><code></code></i></b></code>');
  183. //EDIT rennyf1
  184. text = text.replace(/<b><i><\/i><\/b>/gi, '<b><i><code></code></i></b>');
  185. //EDIT yaranaika
  186. text = text.replace(/<i><b><\/b><\/i>/gi, '<i><b><code></code></b></i>');
  187. //EDIT conwayshrug
  188. text = text.replace(/<code><b><\/b><\/code>/gi, '<code><b><code></code></b></code>');
  189. //EDIT conwayfacepalm
  190. text = text.replace(/<b><code><b><\/b><\/code><\/b>/gi, '<b><code><b><code></code></b></code></b>');
  191. //EDIT mute
  192. text = text.replace(/<b><code><i><\/i><\/code><\/b>/gi, '<b><code><i><code></code></i></code></b>');
  193. //EDIT surprise
  194. text = text.replace(/<i><code><b><\/b><\/code><\/i>/gi, '<i><code><b><code></code></b></code></i>');
  195. //EDIT questionmark
  196. text = text.replace(/<i><code><i><\/i><\/code><\/i>/gi, '<i><code><i><code></code></i></code></i>');
  197. //EDIT gokigen
  198. text = text.replace(/<code><b><b><\/b><\/b><\/code>/gi, '<code><b><b><code></code></b></b></code>');
  199. //EDIT happycrank
  200. text = text.replace(/<code><i><b><\/b><\/i><\/code>/gi, '<code><i><b><code></code></b></i></code>');
  201. //EDIT Marquee
  202. text = text.replace(/<code><code><b><\/b><\/code><\/code>/gi, '<code><code><b><code></code></b></code></code>').replace(/<code><code><code><b><i><\/i><\/b><\/code><\/code><\/code>/gi, '<code><code><code><b><i><code></code></i></b></code></code></code>');
  203. //EDIT Underline
  204. text = text.replace(/<code><code><i><\/i><\/code><\/code>/gi, '<code><code><i><code></code></i></code></code>').replace(/<code><code><code><b><\/b><\/code><\/code><\/code>/gi, '<code><code><code><b><code></code></b></code></code></code>');
  205. //EDIT Strikeout
  206. text = text.replace(/<i><code><i><b><\/b><\/i><\/code><\/i>/gi, '<i><code><i><b><code></code></b></i></code></i>').replace(/<code><code><code><i><\/i><\/code><\/code><\/code>/gi, '<code><code><code><i><code></code></i></code></code></code>');
  207. //EDIT Small Font
  208. text = text.replace(/<i><code><b><b><\/b><\/b><\/code><\/i>/gi, '<i><code><b><b><code></code></b></b></code></i>');
  209. //EDIT Big Font
  210. text = text.replace(/<b><code><b><b><\/b><\/b><\/code><\/b>/gi, '<b><code><b><b><code></code></b></b></code></b>');
  211. //EDIT DINOSAUR
  212. text = text.replace(/<b><code><i><b><\/b><\/i><\/code><\/b>/gi, '<b><code><i><b><code></code></b></i></code></b>');
  213.  
  214. document.getElementsByTagName('textarea')[0].value = text;
  215. } else {
  216. var elemId = event.target.id;
  217. var obj = document.getElementsByTagName('textarea')[0];
  218. if (elemId == BTN_ID.RED) {
  219. insertAtCaret(obj, '<red>', '</font>');
  220. } else if (elemId == BTN_ID.BLUE) {
  221. insertAtCaret(obj, '<blue>', '</font>');
  222. } else if (elemId == BTN_ID.GOLD) {
  223. insertAtCaret(obj, '<gold>', '</font>');
  224. } else if (elemId == BTN_ID.MAUVE) {
  225. insertAtCaret(obj, '<mauve>', '</font>');
  226. } else if (elemId == BTN_ID.PINK) {
  227. insertAtCaret(obj, '<salmonpink>', '</font>');
  228. } else if (elemId == BTN_ID.ORANGE) {
  229. insertAtCaret(obj, '<orange>', '</font>');
  230. } else if (elemId == BTN_ID.GREEN) {
  231. insertAtCaret(obj, '<green>', '</font>');
  232. } else if (elemId == BTN_ID.UNDERLINE) {
  233. insertAtCaret(obj, '<u>', '</u>');
  234. } else if (elemId == BTN_ID.STRIKEOUT) {
  235. insertAtCaret(obj, '<strike>', '</strike>');
  236. } else if (elemId == BTN_ID.SMALL) {
  237. insertAtCaret(obj, '<small>', '</font>');
  238. } else if (elemId == BTN_ID.BIG) {
  239. insertAtCaret(obj, '<big>', '</font>');
  240. }
  241. }
  242. }
  243.  
  244. function insertAtCaret(obj, tagOpen, tagClose) {
  245. if (obj.selectionStart) {
  246. obj.focus();
  247. var start = obj.selectionStart;
  248. var end = obj.selectionEnd;
  249. obj.value = obj.value.substr(0, start).concat(tagOpen).concat(obj.value.substr(start, end - start)).concat(tagClose).concat(obj.value.substr(end));
  250. }
  251.  
  252. if (start != null) {
  253. setCaretTo(obj, start + tagOpen.length);
  254. } else {
  255. //obj.value += text;
  256. }
  257. }
  258.  
  259. function setCaretTo(obj, pos) {
  260. if(obj.createTextRange) {
  261. var range = obj.createTextRange();
  262. range.move('character', pos);
  263. range.select();
  264. } else if(obj.selectionStart) {
  265. obj.focus();
  266. obj.setSelectionRange(pos, pos);
  267. }
  268. }
  269.  
  270. function renderColors() {
  271. var msg = document.getElementsByClassName('msg_body');
  272. if (msg.length != 0) {
  273. var i = 0;
  274. for (i = 0; i < msg.length; i++) {
  275. //Comic Sans
  276. msg[i].innerHTML = msg[i].innerHTML.replace(/<b><code><b><i><\/i><\/b><\/code><\/b>/gi, "<font face=ComicSans>");
  277. //Dinosaur
  278. msg[i].innerHTML = msg[i].innerHTML.replace(/<b><code><i><b><\/b><\/i><\/code><\/b>/gi, "<img src=http://i.imgur.com/56TCBmn.gif>");
  279. //Big Font
  280. msg[i].innerHTML = msg[i].innerHTML.replace(/<b><code><b><b><\/b><\/b><\/code><\/b>/gi, "<font size=5>");
  281. //Small Font
  282. msg[i].innerHTML = msg[i].innerHTML.replace(/<i><code><b><b><\/b><\/b><\/code><\/i>/gi, "<font size=1>");
  283. //Strikeout
  284. msg[i].innerHTML = msg[i].innerHTML.replace(/<i><code><i><b><\/b><\/i><\/code><\/i>/gi, "<strike>").replace(/<code><code><code><i><\/i><\/code><\/code><\/code>/gi, '</strike>');
  285. //Underline
  286. msg[i].innerHTML = msg[i].innerHTML.replace(/<code><code><i><\/i><\/code><\/code>/gi, "<u>").replace(/<code><code><code><b><\/b><\/code><\/code><\/code>/gi, '</u>');
  287. //Marquee
  288. msg[i].innerHTML = msg[i].innerHTML.replace(/<code><code><b><\/b><\/code><\/code>/gi, "<marquee>").replace(/<code><code><code><b><i><\/i><\/b><\/code><\/code><\/code>/gi, '</marquee>');
  289.  
  290. //Madoka Font
  291. msg[i].innerHTML = msg[i].innerHTML.replace(/<i><code><i><i><\/i><\/i><\/code><\/i>/gi, "<font face=MadokaRunes>");
  292. //Orange
  293. msg[i].innerHTML = msg[i].innerHTML.replace(/<b><code><i><i><\/i><\/i><\/code><\/b>/gi, "<font color=#FFA500><b>");
  294. //Salmon Pink
  295. msg[i].innerHTML = msg[i].innerHTML.replace(/<i><i><i><\/i><\/i><\/i>/gi, "<font color=#FF9999><b>");
  296. //Mauve
  297. msg[i].innerHTML = msg[i].innerHTML.replace(/<i><i><b><\/b><\/i><\/i>/gi, "<font color=#925f6e><b>");
  298. //Red
  299. msg[i].innerHTML = msg[i].innerHTML.replace(/<i><b><b><\/b><\/b><\/i>/gi, "<font color=#F00><b>");
  300. //Blue
  301. msg[i].innerHTML = msg[i].innerHTML.replace(/<b><b><b><\/b><\/b><\/b>/gi, "<font color=#00F><b>");
  302. //Gold
  303. msg[i].innerHTML = msg[i].innerHTML.replace(/<b><b><i><\/i><\/b><\/b>/gi, "<font color=#FC0><b>");
  304. //happycrank
  305. msg[i].innerHTML = msg[i].innerHTML.replace(/<code><i><b><\/b><\/i><\/code>/gi, "<img src=http://cdn.steamcommunity.com//economy/emoticon/:happycrank:>");
  306. //AOEKnight
  307. msg[i].innerHTML = msg[i].innerHTML.replace(/<code><b><i><\/i><\/b><\/code>/gi, "<img src=http://cdn.steamcommunity.com//economy/emoticon/:AOEKnight:>");
  308.  
  309. //tobdog
  310. msg[i].innerHTML = msg[i].innerHTML.replace(/<code><b><b><\/b><\/b><\/code>/gi, "<img src=http://i.imgur.com/ZahAUP4.png>");
  311. //sans emote
  312. msg[i].innerHTML = msg[i].innerHTML.replace(/<i><code><i><\/i><\/code><\/i>/gi, "<img src=http://i.imgur.com/Tswhynu.png>");
  313. //papyrus emote
  314. msg[i].innerHTML = msg[i].innerHTML.replace(/<i><code><b><\/b><\/code><\/i>/gi, "<img src=http://i.imgur.com/jKh8pPC.png>");
  315. //papyrus font
  316. msg[i].innerHTML = msg[i].innerHTML.replace(/<b><code><i><\/i><\/code><\/b>/gi, "<font face=Papyrus>");
  317. //conwayfacepalm
  318. msg[i].innerHTML = msg[i].innerHTML.replace(/<b><code><b><\/b><\/code><\/b>/gi, "<img src=http://cdn.steamcommunity.com//economy/emoticon/:conwayfacepalm:>");
  319. //conwayshrug
  320. msg[i].innerHTML = msg[i].innerHTML.replace(/<code><b><\/b><\/code>/gi, "<img src=http://cdn.steamcommunity.com//economy/emoticon/:conwayshrug:>");
  321. //yaranaika
  322. msg[i].innerHTML = msg[i].innerHTML.replace(/<i><b><\/b><\/i>/gi, "<img src=http://cdn.steamcommunity.com//economy/emoticon/:yaranaika:>");
  323. //rennyf1
  324. msg[i].innerHTML = msg[i].innerHTML.replace(/<b><i><\/i><\/b>/gi, "<img src=http://cdn.steamcommunity.com//economy/emoticon/:rennyf1:>");
  325. //Green
  326. msg[i].innerHTML = msg[i].innerHTML.replace(/<b><i><i><\/i><\/i><\/b>/gi, "<font color=#6C0><b>").replace(/<code><i><\/i><\/code>/gi, '</b></font>');
  327. }
  328. }
  329. }