旧的JavaScript函数使浏览器崩溃

旧的JavaScript函数使浏览器崩溃,javascript,mootools,Javascript,Mootools,我正在将一个mootools脚本集成到一个页面上,该页面具有非常古老的JavaScript函数,这些函数运行导航垂直菜单。这个旧剧本现在很难改变 断线是: function stgobj(id) { with(document) return nIE && nVER < 5 ? all[id] : nNN4 ? layers[id] : getElementById(id); } 不确定它的确切用途,但它看起来像是在渲染某些元素。如果被注释,菜单将消失 FF、Ch

我正在将一个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.getElementByIdid。或者更好的方法是,完全放弃这个函数,直接调用document.getElementById


但是,如果它正在破坏Firefox和Chrome等现代浏览器,那么您还应该查看浏览器检测逻辑—填充nIE、nVER和nNN4变量的代码,否则,它可能会在其他地方崩溃。

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


但是,如果它正在使Firefox和Chrome等现代浏览器崩溃,那么您还应该查看浏览器检测逻辑—填充nIE、NVR和nNN4变量的代码,否则它可能会在其他地方崩溃。

这是document.getElementById的兼容函数。我认为你应该能够做到:

stgobj = document.getElementById.bind(document);

它是document.getElementById的兼容函数。我认为你应该能够做到:

stgobj = document.getElementById.bind(document);

非常感谢你的回答。