第一步错误代码:

<span style="color:red;font-family:" serif",tahoma,verdana,helvetica;font-size:12px;font-style:normal;font-weight:400;text-decoration:none;"="" sans="">XXXX</span>

一直以为是多个双引号引起的bug。最终发现是font-family后面多了个空格导致的。

第二步找到wxParse.js文件,把style后有空格的去掉

var arr1 = data.split('style=')
var ping = arr1[0] + "style=" + arr1[1].replace(/\s/g, "") ;

发现这个问题并不可行,所以重新编写了,请直接参考第三步和第四步

第三步找到wxParse.js,正则找到style属性 去掉里面的空格

    var reg = /style="[^=>]*"([(\s+\w+=)|>])/g
    var abc = data.replace(reg,function(a){
      a = a.replace(/\s+/g,'')
      return a
    })
    transData = HtmlToJson.html2json(abc, bindName);

第四步htmlparser.js里面的startTag的正则改掉
原本的正则

var startTag =/^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z_:][-a-zA-Z0-9_:.]*(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+ 
/^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z_:][-a-zA-Z0-9_:.])?)*)\s*(\/?)>/

改完后正则

var startTag = /^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z_:][-a-zA-Z0-9_:.]*(?:\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/

把有关"="号的错误代码限制去掉

第五步完美格式化出来了
image.png


chris_Evans
330 声望5 粉丝

自己挖的坑,要自己填