瀏覽代碼

HTML 렌더러 리팩토링, video 태그 지원 추가

Surplus_Up (2DU) 6 年之前
父節點
當前提交
081705b8ce
共有 4 個文件被更改,包括 89 次插入50 次删除
  1. 1 1
      route/tool/func.py
  2. 1 1
      version.json
  3. 0 22
      views/main_css/js/dummy_do_open_foot.js
  4. 87 26
      views/main_css/js/render_html.js

+ 1 - 1
route/tool/func.py

@@ -499,7 +499,7 @@ def other2(data):
         data += ['']
 
     req_list = ''
-    main_css_ver = 27
+    main_css_ver = 28
 
     if not 'main_css_load' in flask.session or not 'main_css_ver' in flask.session or flask.session['main_css_ver'] != main_css_ver:
         for i_data in os.listdir(os.path.join("views", "main_css", "css")):

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "master" : {
-        "r_ver" : "v3.1.8-master-11",
+        "r_ver" : "v3.1.8-master-12",
         "c_ver" : "3180200",
         "s_ver" : "8"
     }, "stable" : {

+ 0 - 22
views/main_css/js/dummy_do_open_foot.js

@@ -1,22 +0,0 @@
-function dummy_do_open_foot(name) {
-    var found_include = name.match(/^(include_(?:[0-9]+)\-)/);
-    if(found_include) {
-        var o_data = document.getElementById(found_include[1] + 'c' + name.replace(/^(?:include_(?:[0-9]+)\-)/, ''));
-    } else {
-        var o_data = document.getElementById('c' + name);
-    }
-
-    var g_data = document.getElementById(name.replace(/\.([0-9]+)$/, ''));
-
-    if(o_data.innerHTML === '') {
-        o_data.style.display = 'block';
-        o_data.innerHTML += '' +
-            '<div class="foot_in">' +
-                '<a onclick="do_open_foot(\'' + name + '\')" href="javascript:void(0);">(X)</a> <a onclick="do_open_foot(\'' + name + '\')" href="#' + name + '">(Go)</a> ' + g_data.innerHTML +
-            '</div>' +
-        '';
-    } else {
-        o_data.style.display = 'none';
-        o_data.innerHTML = '';
-    }
-}

+ 87 - 26
views/main_css/js/render_html.js

@@ -6,39 +6,100 @@ function render_html(name = '') {
         if(document.getElementById(name + '_' + String(num))) {
             data = document.getElementById(name + '_' + String(num)).innerHTML;
 
-            var t_data = ['b', 'i', 's', 'del', 'strong', 'bold', 'em', 'sub', 'sup']
+            var src_list = ['www.youtube.com', 'www.google.com', 'play-tv.kakao.com'];
+            var t_data = [
+                'b', 'i', 's', 'del', 'strong', 'bold', 'em', 'sub', 'sup', 
+                'div', 'span', 
+                'a',
+                'iframe',
+                'video'
+            ];
             for(var key in t_data) {
-                var patt = new RegExp('&lt;' + t_data[key] + '&gt;((?:(?!&lt;\/' + t_data[key] + '&gt;).)*)&lt;\/' + t_data[key] + '&gt;', 'ig');
-                data = data.replace(patt, '<' + t_data[key] + '>$1</' + t_data[key] + '>');
-            }
+                patt = new RegExp(
+                    '&lt;' + t_data[key] + '( (?:(?:(?!&gt;).)+))?&gt;((?:(?!&lt;\/' + t_data[key] + '&gt;).)*)&lt;\/' + t_data[key] + '&gt;',
+                    'ig'
+                );
+                
+                data = data.replace(patt, function(full, in_data, in_data_2) {
+                    if(['b', 'i', 's', 'del', 'strong', 'bold', 'em', 'sub', 'sup'].includes(t_data[key])) {
+                        return '<' + t_data[key] + '>' + in_data_2 + '</' + t_data[key] + '>'
+                    } else if(t_data[key] === 'div' || t_data[key] === 'span') {
+                        var style_data = in_data.match(/ style=['"]([^'"]*)['"]/);
+                        if(style_data) {
+                            style_data = style_data[1].replace(/position/ig, '');
+                        } else {
+                            style_data = '';
+                        }
 
-            var src_list = {
-                'www.youtube.com' : '1',
-                'www.google.com' : '1'
-            }
-            data = data.replace(/&lt;iframe( (?:(?:(?!&gt;).)+))&gt;&lt;\/iframe&gt;/ig, function(full, in_data) {
-                var src_data = in_data.match(/ src=['"]https:\/\/([^/'"]+)(?:[^'"]+)['"](?: |$)/);
-                if(src_data) {
-                    if(src_list[src_data[1]]) {
-                        return '<iframe' + in_data + '></iframe>';
+                        return '<' + t_data[key] + ' style="' + style_data + '">' + in_data_2 + '</' + t_data[key] + '>';
+                    } else if(t_data[key] === 'a') {
+                        var link_data = in_data.match(/ href=['"]([^'"]*)['"]/);
+                        if(link_data) {
+                            link_data = link_data[1].replace(/^javascript:/ig, '');
+                        } else {
+                            link_data = '';
+                        }
+
+                        return '<' + t_data[key] + ' id="out_link" href="' + link_data + '">' + in_data_2 + '</' + t_data[key] + '>';
+                    } else if(t_data[key] === 'iframe') {
+                        var src_data = in_data.match(/ src=['"]([^'"]*)['"]/);
+                        if(src_data) {
+                            src_data = src_data[1];
+
+                            var src_check = src_data.match(/^http(?:s)?:\/\/([^/]+)/);
+                            if(src_check) { 
+                                if(!src_list.includes(src_check[1])) {
+                                    src_data = '';
+                                }
+                            } else {
+                                src_data = '';
+                            }
+                        } else {
+                            src_data = '';
+                        }
+
+                        var width_data = in_data.match(/ width=['"]([^'"]*)['"]/);
+                        if(width_data) {
+                            width_data = width_data[1];
+                        } else {
+                            width_data = '';
+                        }
+
+                        var height_data = in_data.match(/ height=['"]([^'"]*)['"]/);
+                        if(height_data) {
+                            height_data = height_data[1];
+                        } else {
+                            height_data = '';
+                        }
+
+                        return '<' + t_data[key] + ' src="' + src_data + '" width="' + width_data + '" height="' + height_data + '" allowfullscreen frameborder="0">' + in_data_2 + '</' + t_data[key] + '>';
                     } else {
-                        return full;
-                    }
-                }
-            });
+                        var src_data = in_data.match(/ src=['"]([^'"]*)['"]/);
+                        if(src_data) {
+                            src_data = src_data[1];
+                        } else {
+                            src_data = '';
+                        }
 
-            t_data = ['div', 'span']
-            for(var key in t_data) {
-                patt = new RegExp('&lt;' + t_data[key] + ' style=["\']((?:(?!["\']).)+)["\']&gt;((?:(?!&lt;\/' + t_data[key] + '&gt;).)*)&lt;\/' + t_data[key] + '&gt;', 'ig');
-                data = data.replace(patt, function(full, in_data, in_data_2) {
-                    return '<' + t_data[key] + ' style="' + in_data.replace(/position/ig, '') + '">' + in_data_2 + '</' + t_data[key] + '>'
+                        var width_data = in_data.match(/ width=['"]([^'"]*)['"]/);
+                        if(width_data) {
+                            width_data = width_data[1];
+                        } else {
+                            width_data = '';
+                        }
+
+                        var height_data = in_data.match(/ height=['"]([^'"]*)['"]/);
+                        if(height_data) {
+                            height_data = height_data[1];
+                        } else {
+                            height_data = '';
+                        }
+
+                        return '<' + t_data[key] + ' src="' + src_data + '" width="' + width_data + '" height="' + height_data + '">' + in_data_2 + '</' + t_data[key] + '>';
+                    }
                 });
             }
 
-            data = data.replace(/&lt;a href=["\']((?:(?!["\']).)+)["\']&gt;((?:(?!&lt;\/a&gt;).)*)&lt;\/a&gt;/ig, function(full, in_data, in_data_2) {
-                return '<a id="out_link" href="' + in_data.replace(/^javascript/ig, '') + '">' + in_data_2 + '</a>'
-            });
-
             document.getElementById(name + '_' + String(num)).innerHTML = data;
         } else {
             break;