旧的JavaScript函数使浏览器崩溃

Old JavaScript Function Crashes Browser

本文关键字:浏览器 崩溃 函数 JavaScript 旧的      更新时间:2023-09-26

我正在将一个mootools脚本集成到一个页面上,该页面具有运行导航垂直菜单的非常古老的JavaScript函数。这个旧剧本现在很难改变。

换行符为:

function stgobj(id) {
    with(document) return nIE && nVER < 5 ? all[id] : nNN4 ? layers[id] : getElementById(id);
}
不确定它的目的是

什么,但看起来它正在渲染一些元素。如果注释,菜单将消失。

FF,Chrome,IE(不会崩溃,但菜单不会呈现)

有什么快速补丁来解决浏览器崩溃吗?

看起来它的目的是返回与给定 ID 对应的元素。代码只是使用一些基于浏览器的不同方法 - document.all适用于IE5及更早版本,document.layers适用于Netscape 4。除非你需要支持那些古老的浏览器,否则你可以更改函数以只返回document.getElementById(id)。或者更好的是,完全放弃这个函数并直接调用document.getElementById

但是,如果它崩溃了像Firefox和Chrome这样的现代浏览器,那么你还应该看看浏览器检测逻辑(填充nIEnVERnNN4变量的代码),否则它最终可能会在其他地方崩溃。

它是document.getElementById的"兼容性"函数。我想你应该能够等于它:

stgobj = document.getElementById.bind(document);