gpt4 book ai didi

javascript - 是否可以在不更改所有用法的情况下在 IE11 中使用 "document.all"?

转载 作者:行者123 更新时间:2023-11-29 18:08:42 25 4
gpt4 key购买 nike

我正在处理旧项目。其中 document.all() 在 JavaScript 中使用。相同的命令在 IE8、9、10 中运行良好,但在 IE11 上不起作用。

我开始知道我们需要使用 document.getElementById(),但我需要为此更改将近 1000 个 JSP 文件。

请提出建议 - 是否有其他方法可以实现

最佳答案

可以在 IE11/Edge 中使用 document.all(id)document.all[id] - 至少当网站有一个 HTML4 文档类型,可能还有相关的兼容性功能。它似乎也适用于(对我而言)E11/Edge 和 HTML5; YMMV 在最后一个配置上。

也就是说,即使它是"no longer supported" - even marked as removed (因此 YMMV 在“兼容”模式之外)- 它仍在 IE11 中实现。 Windows XP“不再受支持”,但它继续被使用并且仍然运行得和以前一样好..不要介意它是一艘废弃的船。 (该文档仅提及触发绿场行为的 HTML5 文档类型;尽管我无法观察到声称的效果。)

因为这是一个“旧项目”,最简单的解决方案就是不理会它,根据需要触发 IE“兼容模式”;无论如何,可能还有许多其他过时的方法。也就是说,将站点保留为 HTML4,因为毕竟这是一个“旧项目”。

虽然我最初在评论中建议“shimming”1,但由于多种原因,所需的属性/对象存在问题,并且 all[id] 形式无法模拟为 RobG指出。此外,这样的填充程序实际上不会更新代码以使用已批准的方法 - 它只是一个谎言,与最初删除此类填充程序的原因背道而驰。

因此,如果希望更改弃用/绝对用法,正确的解决方案修改“1000 个 JSP 文件”。通过一些分析,这应该可以通过主要自动化的全局替换以及随后的差异/增量代码审查来实现。


1FWIW,最基本的垫片,假设在 IE11 中重新分配给 document.all 是可能的-where-document.all-is-really-removed,将类似于:

if (!document.all) {
document.all = document.getElementById;
}

这将允许 document.all(someId) all(name), all[id]all.lengthall.item(id)document.all 的当前用法仍需要查看,以确保 shim 涵盖现有用法;并且未涵盖的少数用法应全面更新。

如果这样的 shim 就足够了,它仍然需要注入(inject)到所有“1000 个 JSP 文件”中;希望已经有一个通用的脚本文件..

关于javascript - 是否可以在不更改所有用法的情况下在 IE11 中使用 "document.all"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29426323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com