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-07-15 提交的版本。查看 最新版本

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