render.js 4.9 KB

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