ThoughtWork

body标签onLoad执行无效,为何?

2018-03-24  本文已影响2人  亨利何

Henrh HE

Example: 

<html>

// your code right here
...
...
<body onLoad="init()">

// your code right here
...
...
</body>
<html>

[导读]

HTML页面中直接使用onLoad()来绑定方法,保证:

页面元素加载完成后才开始执行方法,避免selector获得的元素为null

但是,页面运行效果在chrome中显示正常,没有出错,但页面上传至服务器后再访问,页面显示为空,没有出现该出现的元素,为何为出现这种情况?

[关键词]

onLoad, 页面资源加载,浏览器兼容性

[提问]

[正文]

1. Bug分析

页面元素没有出现,问题归结到onload函数,没有正确执行。而onload正确执行的前提是页面元素全部加载完成后才会执行,而且:

页面从上至下加载,直到onload处,这之间都有可能

Jianshu.png

2. Bug排查

ES6的语法不支持

3. Bug解决

变量声明使用var,模板字符串使用字符串拼接代替

function example () {
     for (var i = 0; i < arr.length; i++) { // Ⅰ
          // code here
          var _id = 'item' +  arr[index].id // Ⅱ
          // code here
     }
}

再次上传服务器,正常


浏览器的兼容性问题我经常只会考虑到css,没有考虑到js这一层语法是否支持,受教了

END

上一篇下一篇

猜你喜欢

热点阅读