博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS innerHTML Double Quotes
阅读量:5286 次
发布时间:2019-06-14

本文共 1389 字,大约阅读时间需要 4 分钟。

通过js的innerhtml来获取一个dom节点,内部的html值时,如果属性值没有空格,则ie左右版本下,都会出现标签大些,双引号丢失问题。如果属性值有空格,则标签会变成大写,引号则正常输出.

当属性值无空格时:

FF3.5.7(gecko/20091221)<div id="div2"></div>
IE6 弹出:<DIV id=div2></DIV>
IE7 弹出:<DIV id=div2></DIV>
IE8 弹出:<DIV id=div2></DIV>
有空格时:
FF3.5.7(gecko/20091221)<div id="div2 "></div>
IE6 弹出:<DIV id="div2 "></DIV>
IE7 弹出:<DIV id="div2 "></DIV>
IE8 弹出:<DIV id="div2 "></DIV>
产生这个BUG的原因是什么呢?

When you get the innerHTML of a DOM node in IE, if there are no spaces in an attribute value, IE will remove the quotes around it.IE's innerHTML doesn't remove quotes from non standard attributes.

即使是jQuery里面,jquery团队的技术人员也没有解决这个问题.

提供下解决方案:

 

function ieInnerHTML(obj) {          var zz = obj.innerHTML,              z =             zz.match(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/g);           if (z){             for (var i=0;i
]/g); if (y){ for (var j=0;j
])/g,'="$1"$2')); } } zz = zz.replace(zSaved,z[i]); } } return zz; }

 在相应的地方调用函数ieInnerHTML

  if(/*@cc_on!@*/0){ 

      inner_str = ieInnerHTML(obj);

  }else

      inner_str = obj.innerHTML;

  }

原理:对IE版本进行对应的JS处理,而且相应的元素标签中不要出现非标准元素

参考资料:

本文引用:http://liupeng.us/how-to-fix-js-innerhtml-double-quotes/

 

转载于:https://www.cnblogs.com/Lewis/archive/2012/02/07/2341664.html

你可能感兴趣的文章
sqlserver 行转列、列转行[转]
查看>>
【IScroll深入学习】解决IScroll疑难杂症
查看>>
python 数据类型
查看>>
108-PHP类成员protected和private成员属性不能被查看数值
查看>>
css控制height充满浏览器视口
查看>>
Linux 系统目录结构
查看>>
python学习之 - XML
查看>>
css问题小计
查看>>
Laravel学习笔记(三)数据库 数据库迁移
查看>>
ORACLE查看并修改最大连接数
查看>>
box-flex不均分问题
查看>>
Python--GIL 详解
查看>>
Oracle数据导入Mysql中
查看>>
BZOJ-4424 &&CodeForces-19E Fairy DP+dfs (Link-Cut-Tree可A)
查看>>
MongoDB学习笔记——聚合操作之group,distinct,count
查看>>
大道至简读后感(第四章)
查看>>
IDA IDC Tutorials: Additional Auto-Commenting
查看>>
k8s-存储卷1-十二
查看>>
在Android中Intent的概念及应用(二)——Intent过滤器相关选项
查看>>
第十六章 多态性(一)
查看>>