Javascript 是否可以使用;文件.全部“;在IE11中不改变每个用法?

Javascript 是否可以使用;文件.全部“;在IE11中不改变每个用法?,javascript,internet-explorer,Javascript,Internet Explorer,我在做老项目。其中,JavaScript中使用了document.all()。相同的命令在IE8、9、10中运行良好,但在IE11中不起作用 我知道我们需要使用document.getElementById(),但我需要更改近1000个JSP文件来实现此更改 请建议-是否有任何替代方案使其成为可能?可以在IE11/Edge中使用document.all(id)和document.all[id]——至少在站点具有HTML4 doctype以及相关兼容性功能时是这样。在E11/Edge和HTML5中

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

我知道我们需要使用
document.getElementById()
,但我需要更改近1000个JSP文件来实现此更改

请建议-是否有任何替代方案使其成为可能?

可以在IE11/Edge中使用
document.all(id)
document.all[id]
——至少在站点具有HTML4 doctype以及相关兼容性功能时是这样。在E11/Edge和HTML5中,它似乎也起作用(对我而言);最后一个配置上的YMMV

也就是说,即使它是——而且是(在“兼容性”模式之外),它仍然在IE11中实现。Windows XP“不再受支持”,但它仍在继续使用,而且运行情况仍然与以前一样好。。不管它是一艘废弃的船。(文档中仅提及触发绿地行为的HTML5 doctype;尽管我无法观察到声称的效果。)

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

虽然我最初建议在注释中使用“填隙”1,但所需的属性/对象由于几个原因存在问题,
all[id]
形式无法模仿RobG指出的那样。此外,这样的垫片实际上不会更新代码以使用经批准的方法——这只是一个谎言,与最初删除此类垫片的原因背道而驰

因此,如果希望更改不推荐/陈旧的用法,正确的解决方案是修改“1000个JSP文件”。通过一点分析,这应该是可能的,主要是自动化的全局替换,然后是差异/增量代码审查


1FWW是最基本的垫片,假设在IE11-where-document.all-is-REQUALY-removed中可以重新分配到document.all,则其如下所示:

if (!document.all) {
   document.all = document.getElementById;
}
这将允许
document.all(someId)
但不允许
all(name)
all[id]
all.length
all.item(id)
文档的当前使用情况。仍需查看所有的
,以确保垫片涵盖现有使用情况;还有一些没有涵盖的用法应该全面更新


如果这样一个垫片是足够的,它仍然需要注入到所有的“1000个JSP文件”;希望已经有了一个通用的脚本文件。

通过强制IE11模拟IE10(我使用了meta标记
document.all变得可用)


填充文档的问题在于,它实际上是一个可以调用的属性,例如
document。all('foo')
document相同。all['foo']
并且它将名称和ID属性视为相同的('foo'可以是名称或ID).@user2864740是的,只要使用限制为getElementById所做的,但是全局替换也会起作用。:-)可能它只在兼容模式下启用?我现在不能试一试moment@Worf是 啊我有点不确定。在IE11/Edge/HTML4
文档中。尽管所有的
都存在。可能是HTML5(不兼容,但仍然是IE11/Edge)触发了这一点。@Worf我实际上无法获取
文档。所有
都将消失。我想看一个例子,在这个例子中,它确实被“删除”,正如文档中所声称的那样。@Worf当我们使用兼容模式时,它工作得很好。但客户不同意使用兼容模式。@phanikrishna使用什么HTML doctype?您是否有显示document.all“不工作”的最小HTML文件?我不相信
文档。所有
都在HTML4下删除(文档表明HTML5 doctype是必需的触发器);但我无法触发document.all消失,即使在E11/Edge和HTML5下。然而,这并不意味着我的系统上没有不可靠的本地设置/配置。。但是我没有明确选择兼容模式和
文档。所有
都仍然可用。