2
0

render_html.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. function render_html(name = '') {
  2. var num = 0;
  3. while(1) {
  4. num += 1;
  5. if(document.getElementById(name + '_' + String(num))) {
  6. data = document.getElementById(name + '_' + String(num)).innerHTML;
  7. var src_list = ['www.youtube.com', 'www.google.com', 'play-tv.kakao.com'];
  8. var t_data = [
  9. 'b', 'i', 's', 'del', 'strong', 'bold', 'em', 'sub', 'sup',
  10. 'div', 'span',
  11. 'a',
  12. 'iframe',
  13. 'video'
  14. ];
  15. for(var key in t_data) {
  16. patt = new RegExp(
  17. '<' + t_data[key] + '( (?:(?:(?!>).)+))?>((?:(?!<\/' + t_data[key] + '>).)*)<\/' + t_data[key] + '>',
  18. 'ig'
  19. );
  20. data = data.replace(patt, function(full, in_data, in_data_2) {
  21. if(['b', 'i', 's', 'del', 'strong', 'bold', 'em', 'sub', 'sup'].includes(t_data[key])) {
  22. return '<' + t_data[key] + '>' + in_data_2 + '</' + t_data[key] + '>'
  23. } else if(t_data[key] === 'div' || t_data[key] === 'span') {
  24. var style_data = in_data.match(/ style=['"]([^'"]*)['"]/);
  25. if(style_data) {
  26. style_data = style_data[1].replace(/position/ig, '');
  27. } else {
  28. style_data = '';
  29. }
  30. return '<' + t_data[key] + ' style="' + style_data + '">' + in_data_2 + '</' + t_data[key] + '>';
  31. } else if(t_data[key] === 'a') {
  32. var link_data = in_data.match(/ href=['"]([^'"]*)['"]/);
  33. if(link_data) {
  34. link_data = link_data[1].replace(/^javascript:/ig, '');
  35. } else {
  36. link_data = '';
  37. }
  38. return '<' + t_data[key] + ' id="out_link" href="' + link_data + '">' + in_data_2 + '</' + t_data[key] + '>';
  39. } else if(t_data[key] === 'iframe') {
  40. var src_data = in_data.match(/ src=['"]([^'"]*)['"]/);
  41. if(src_data) {
  42. src_data = src_data[1];
  43. var src_check = src_data.match(/^http(?:s)?:\/\/([^/]+)/);
  44. if(src_check) {
  45. if(!src_list.includes(src_check[1])) {
  46. src_data = '';
  47. }
  48. } else {
  49. src_data = '';
  50. }
  51. } else {
  52. src_data = '';
  53. }
  54. var width_data = in_data.match(/ width=['"]([^'"]*)['"]/);
  55. if(width_data) {
  56. width_data = width_data[1];
  57. } else {
  58. width_data = '';
  59. }
  60. var height_data = in_data.match(/ height=['"]([^'"]*)['"]/);
  61. if(height_data) {
  62. height_data = height_data[1];
  63. } else {
  64. height_data = '';
  65. }
  66. return '<' + t_data[key] + ' src="' + src_data + '" width="' + width_data + '" height="' + height_data + '" allowfullscreen frameborder="0">' + in_data_2 + '</' + t_data[key] + '>';
  67. } else {
  68. var src_data = in_data.match(/ src=['"]([^'"]*)['"]/);
  69. if(src_data) {
  70. src_data = src_data[1];
  71. } else {
  72. src_data = '';
  73. }
  74. var width_data = in_data.match(/ width=['"]([^'"]*)['"]/);
  75. if(width_data) {
  76. width_data = width_data[1];
  77. } else {
  78. width_data = '';
  79. }
  80. var height_data = in_data.match(/ height=['"]([^'"]*)['"]/);
  81. if(height_data) {
  82. height_data = height_data[1];
  83. } else {
  84. height_data = '';
  85. }
  86. return '<' + t_data[key] + ' controls src="' + src_data + '" width="' + width_data + '" height="' + height_data + '">' + in_data_2 + '</' + t_data[key] + '>';
  87. }
  88. });
  89. }
  90. document.getElementById(name + '_' + String(num)).innerHTML = data;
  91. } else {
  92. break;
  93. }
  94. }
  95. }