IE8问题

ie8 下遍历字符串出现的 bug

在主流浏览器及 ie9+下,我们在遍历字符串时,浏览器会强制把该对象的类型转换为数组,但是在 ie8 下则不会,所以我们还是老老实实先转换为数组吧。
大家在不同浏览器下试试吧,解决方法就是加一句 str.split(“”),ie8 下才会生效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>demo</title>
</head>
<script src="js/jquery-1.11.3.min.js"></script>
<style>
* {
padding: 0;
margin: 0;
}
</style>
<body>
<input id="q1" type="text" value="一段测试文字" />

<script>
var str = "测试文字";
var str1 = "原文字";
for (var i in str) {
str1 += str[i];
}
$("#q1").val(str1);
</script>
</body>
</html>

字符串截取用 substr 在 ie8 下遇到的坑

1
2
var str = "hello world 6666";
str.substr(-4, 4);

正确返回应该是:6666
但是 ie8 下 substr 参数不支持负数,返回的是:hell,可以手动试下。
解决的办法就是改用 substring 方法:

1
str.substring(str.length - 4);

这样 ie8 下就会正常返回:6666