Browse Source

JSON格式化bug fix

Alien 11 years ago
parent
commit
09d8346571

+ 1 - 1
chrome/manifest.json

@@ -1,6 +1,6 @@
 { 
 	"name": "WEB前端助手(FeHelper)", 
-	"version": "5.0",
+	"version": "5.2",
     "manifest_version": 2,
 	 
 	"default_locale": "zh_CN", 

+ 1 - 1
chrome/online.manifest.json

@@ -1,6 +1,6 @@
 {
     "name": "WEB前端助手(FeHelper)",
-    "version": "5.0",
+    "version": "5.2",
     "manifest_version": 2,
 
     "default_locale": "zh_CN",

+ 20 - 24
chrome/static/js/fcp/html/fcp-html.js

@@ -191,47 +191,43 @@ baidu.html = (function(){
 	 */
 	var _detectDomMaxDepth = function(dom){
 		//如果不是html节点,则直接退出
-		if(dom.nodeType !== 1) return;
+		if(dom.nodeType !== 1 || !dom.tagName) return;
 		
 		//扩展屏蔽
 		if(dom.id === 'fe-helper-tab-box' || dom.id === 'fe-helper-pb-mask') return;
 		
 		//最大深度记录
 		var maxDepth = _summaryInformation.DOM.maxDepth;
-		var depth = 1;
-		var curTag = '';
-		if(dom.id) {	//如果该节点有id,则拼接id
-			curTag = dom.tagName.toLowerCase() + '<span style="color:red;">#' + dom.id + '</span>';
-		} else if(dom.className) {	//没有id,但有class,则拼接class
-			curTag = dom.tagName.toLowerCase() + '<span style="color:green;">.' + dom.className.split(/\s+/).join('.') + '</span>';
-		} else {		//没有id也没有class,就只要标签名
-			curTag = dom.tagName.toLowerCase();
-		}
-		var xpath = curTag;
-		
+		var depth = 0;
+		var curTag , xpath = [];
+
 		//深度遍历
-		while((dom = dom.parentNode) && dom.nodeType === 1) {
+		do {
 			//扩展屏蔽
 			if(dom.id === 'fe-helper-tab-box' || dom.id === 'fe-helper-pb-mask') return;
             //忽略SVG节点
             if(dom.tagName.toLowerCase() == 'svg') continue;
-			
-			if(dom.id) {	//如果该节点有id,则拼接id
-				curTag = dom.tagName.toLowerCase() + '<span style="color:red;">#' + dom.id + '</span>';
-			} else if(dom.className) {	//没有id,但有class,则拼接class
-				curTag = dom.tagName.toLowerCase() + '<span style="color:green;">.' + dom.className.split(/\s+/).join('.') + '</span>';
-			} else {		//没有id也没有class,就只要标签名
-				curTag = dom.tagName.toLowerCase();
-			}
+
+            try{
+                if(dom.id) {	//如果该节点有id,则拼接id
+                    curTag = dom.tagName.toLowerCase() + '<span style="color:red;">#' + dom.id + '</span>';
+                } else if(dom.className) {	//没有id,但有class,则拼接class
+                    curTag = dom.tagName.toLowerCase() + '<span style="color:green;">.' + dom.className.split(/\s+/).join('.') + '</span>';
+                } else {		//没有id也没有class,就只要标签名
+                    curTag = dom.tagName.toLowerCase();
+                }
+            }catch(e){
+                continue;
+            }
 			
 			depth++;
-			xpath = curTag + '<span style="color:gray;">&gt;</span>' + xpath; 
-		}
+			xpath.unshift(curTag);
+		} while((dom = dom.parentNode) && dom.nodeType === 1);
 		
 		//判断当前这个dom节点是否为最大深度
 		if(depth > maxDepth.depth) {
 			maxDepth.depth = depth;
-			maxDepth.xpath = xpath;
+			maxDepth.xpath = xpath.join('<span style="color:gray;">&gt;</span>');
 		}
 	};
 	

+ 5 - 19
chrome/static/js/jsonformat/contentscript-jsonformat.js

@@ -27,33 +27,20 @@ baidu.csJsonFormat = (function () {
         jQuery('<link id="_fehelper_fcp_css_" href="' + fcpCss + '" rel="stylesheet" type="text/css" />').appendTo('head');
     };
 
-    /**
-     * 将escape过的HTML再反解回来
-     * @param txt
-     * @return {String|XML}
-     * @private
-     */
-    var _unEscapeHTML = function(txt) {
-        return txt.replace(/&amp;/g,'&').replace(/&gt;/g,'>')
-            .replace(/&lt;/g,'<').replace(/&quot;/g,'"')
-            .replace(/&#39;/g,"'");
-    };
-
     /**
      * 从页面提取JSON文本
      * @return {*}
      * @private
      */
     var _getJsonText = function(){
-        var source = $.trim($('body>pre:eq(0)').html());
+        var pre = $('body>pre:eq(0)')[0] || {textContent:""};
+        var source = $.trim(pre.textContent);
         if (!source) {
-            source = $.trim($('body').html())
+            source = $.trim(document.body.textContent || '')
         }
         if (!source) {
-            return;
+            return false;
         }
-        // jQuery的html方法是把内容编码后输出的,所以需要反解回去
-        source = _unEscapeHTML(source);
 
         // 如果body的内容还包含HTML标签,肯定不是合法的json了
         // 如果是合法的json,也只可能有一个text节点
@@ -69,7 +56,7 @@ baidu.csJsonFormat = (function () {
                 }
             } else if (nodes[i].nodeType == Node.ELEMENT_NODE) {
                 var tagName = nodes[i].tagName.toLowerCase();
-                var html = $.trim(_unEscapeHTML($(nodes[i]).html()));
+                var html = $.trim(nodes[i].textContent);
                 // 如果是pre标签,则看内容是不是和source一样,一样则continue
                 if(tagName === 'pre' && html  === source) {
                     continue;
@@ -93,7 +80,6 @@ baidu.csJsonFormat = (function () {
      */
     var _format = function () {
         var source = _getJsonText();
-        console.log('33333');
         if(!source) {
             return;
         }