【踩坑】activiti工作流的svg-xml解析報錯


1、問題記錄

  工作流配置畫模板的時候保存成功但是部署報錯。

  IE下 activiti工作流解析xml報錯 type "path" must be followed by either attribute specifications, ">" or "/>"

  Chrome和Firefox正常

2、問題定位

  2.1  服務端是同一台服務器同一個實例,IE報錯,谷歌沒報錯,先檢查比對兩個瀏覽器在服務端的報文

    執行:服務端比對IE請求和谷歌請求報文,內容格式基本相同。檢查path標簽是否閉合。

    結果:所有path標簽都以>或/>閉合,用compare beyond比對僅是屬性值的不同。內容太多,比對工具也沒法很清晰的比對不同的地方。

  2.2 比對法不好比對結果,用xmlspy來校驗IE下xml數據

    

    結果:IE的xml中svg的屬性marker-end和marker-start的值中有雙引號嵌套雙引號的情況  "url("#....")" ,下一步定位為什么IE下屬性值會出現雙引號

  2.3、分析WEB前端代碼,找到nodevalue取值,再找到nodevalue賦值的地方

    

    

  2.4、這里可以看到markerEndUrl是沒有帶引號的,而調用setAttributeNS方法后,path上的屬性就變成 "url("#....")"

    IE: "url(#....)" setAttributeNS后:"url("#....")"

    Chrome: "url(#....)" setAttributeNS后:"url(#....)"

    

3、問題解決

    3.1 setAttributeNS方法初步定為是IE內核上nativecode,尋找polyfill

      結果:百度 谷歌 stackflow上沒有找到很好的解決方法,轉為在取值時修改雙引號

    3.2 對marker-end和marker-start取值時特殊處理

    

 

結尾:定為問題還是從報錯的上下文開始定位,一開始以為是IE的編碼問題,再請求部分繞了很大一圈。

  xml的問題用一些xml校驗工具比較實在,類似json的數據也是

  setAttributeNS這種IE和Chrome下有差異的處理方法 ,猜測是因為()引起,畢竟有很多場景下元素上會有 onclick="fun('aaa')",這里不知道是不是IE做了多余的處理。     有知道准確答案的同學麻煩解惑下,謝謝~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM