1

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

换行符是:

function stgobj(id) {
    with(document) return nIE && nVER < 5 ? all[id] : nNN4 ? layers[id] : getElementById(id);
}

不确定它的确切目的是什么,但它看起来像是在渲染一些元素。如果评论菜单将消失。

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

有什么快速补丁可以解决浏览器崩溃的问题吗?

4

2 回答 2

3

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

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

于 2012-04-17T20:17:12.383 回答
2

这是一个“兼容性”功能document.getElementById。我认为你应该能够平等:

stgobj = document.getElementById.bind(document);
于 2012-04-17T20:17:51.097 回答