我有这个代码在Chrome,IE 11上完美运行,但它不在IE8上,我试图用旧版本替换最近的功能,但我没有得到与Chrome相同的结果。
嗯,这是工作脚本:
我替换了IE8不支持的以下功能:
getElementsByClassName方法() 使用addEventListener() 事件输入 修剪() firstElementChild 的textContent
此代码不起作用:(
我遇到的问题是
//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'
有谁知道如何解决这个问题?提前谢谢
答案 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环境。