ie8下append问题及attr("value",xxx)和val(xxx)问题总结

项目突然要求支持到ie8,然后就开始在ie8下测试,发现很多问题。
首先是一个filter的问题,ie8下不支持filter。这个后来使用jQuery中的$filter解决掉。当然你用的js方法很多可以用相关的jQuery替换。
上面是第一个问题,然后花时间最多的是解决append的问题,我是在input标签下想append一些li的标签的,因为js代码逻辑很复杂代码体量也很大,排查这个问题的时候花了很多时间。一步步走,开始死活没想到会是这个的问题,后来知道后就开始想办法,网上查到的问题都是都是说你append的内容标签不闭合或者不是正规的html标签;
比如 这个-http://blog.sina.com.cn/s/blog_575b0ca50100rgk3.html

假如你使用了一个非正规的html标签,如下

然后,你用jquery给这个标签内加入或写一些内容,如下

$(“#grid”).append(“”);

再比如这个
https://segmentfault.com/a/1190000008342904

这段代码在Chrome、FF、IE11 上,都是可以正常渲染的,但是在IE8
下不行,原因是domList里面的html字符串标签没有闭合。

var domList = ‘’; $(‘body’).append(‘domList’)

改成以下即可

var domList = ‘’; $(‘body’).append(‘domList’)

同理,<div> <span>等标签也一样,在IE8下要仔细检查标签闭合的问题。

还有其他的一些特殊的场景下的解决办法,比如
https://www.cnblogs.com/sniper007/archive/2012/12/18/2823642.html

【问题描述】项目中,ajax返回一大串html,然后用jquery(1.4.4)
append方法,直接把html塞进去,结果ie8下有问题,网上查了一堆,说是标签未闭合,但是那一大串html如何检查是否闭合,哎,没招,用了折中的解决办法。

【解决办法】 var div = document.createElement(“div”); div.innerHTML =
data.data; $(“#wrap”)[0].appendChild(div);

在说了这么多后,我都试了,然后发现没有用,最后我才发现应该是ie8下的input 标签不支持直接放置li标签。后来我直接在input标签下先建了一个ol标签,然后把li标签再一个个的放进去。这里写图片描述

这样做这个问题就被解决掉了。

然后是遇到的第三个问题,是ie8下使用 (".class").attr("value",XXX) (“.class”).val(XXX)这两种方法,ie8认为是同一个!即两个同时使用,后一个会覆盖前一个。具体如下图这里写图片描述
这里写图片描述

这里写图片描述

上图中。attr先写的,那在后续使用val的时候就把标签属性中的value改为了和val里一样的东西。可以看下面的将val先写
这里写图片描述
这里写图片描述
这里写图片描述
从上图可以看到input标签中的value内容就改为了attr中的内容,同时val即显示所需的内容页改掉了。
至于这个问题的处理办法,我这边没有去做更多的处理,一是处理比较麻烦,二是项目里ie8使用的概率很低,也可以使用document的方式去处理,但这样花费的时间太多,老大建议不适用value属性的值从而规避这个问题。当然我查了查这也是我们项目自己作,加上了个value属性,一般都不存在或者换个其他的名字了~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值