如何让JS代码在IE8上运行?

时间:2016-05-26 12:51:52

标签: javascript internet-explorer-8

我有这个代码在Chrome,IE 11上完美运行,但它不在IE8上,我试图用旧版本替换最近的功能,但我没有得到与Chrome相同的结果。

嗯,这是工作脚本:

jsfiddle.net

我替换了IE8不支持的以下功能:

getElementsByClassName方法() 使用addEventListener() 事件输入 修剪() firstElementChild 的textContent

此代码不起作用:(

jsfiddle.net

我遇到的问题是

//Array.prototype.push.apply(grps, this.contener.getElementsByClassName('categorieDesAptitudes'));
Array.prototype.push.apply(grps, this.contener.querySelectorAll('.categorieDesAptitudes'));

// Code 

//while (html = grp.contener.firstElementChild) {
while (html = ( grp.contener.firstElementChild || grp.contener.children[0] || {}) ) {
    // data = html.getElementsByClassName('item-search')[0].textContent;
    data = (html.querySelectorAll('.item-search')[0].textContent || html.querySelectorAll('.item-search')[0].innerText);
    grp.items.push(this.addItem(html, data, idx_g));
}

我有错误,例如无法读取属性'firstElementChild'

有谁知道如何解决这个问题?提前谢谢

1 个答案:

答案 0 :(得分:1)

我唯一可以帮助您将代码转换回有效js的建议,即可能是javascript兼容性。 JavaScript基于Ecma标准,但ie8仅符合es3而不是es5或es6。我能想到的最好方法是使用typescript来制作es3规则。

所以在编译选项中我会将allowjs设置为true并将目标设置为es3。我还会在你的ide / text edittor扩展中使用一个jslint工具,并确保再次将目标设置为es3,它会告诉你一些不存在的东西等......这对于大型项目来说也很棒,但是你有很多东西需要修复es3最终定于16年前我认为早在2000/99所以你必须遇到问题和最后的建议我有使用polyfill即es5环境。