2012-04-17 114 views
1

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

的断行是:

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

不知道到底什么是它的目的,但它看起来像它的渲染一些元素。如果评论,菜单将消失。

FF,Chrome浏览器,IE(不会崩溃,但菜单不渲染)

任何快速更新来解决浏览器崩溃?

回答

3

看起来像它的目的是返回对应于给定ID的元素。该代码仅使用基于浏览器的一些不同方法 - 对于IE5和更早版本,使用一些不同的方法 - document.all,对于Netscape 4使用document.layers。除非需要支持那些古老的浏览器,否则您可以更改函数以返回document.getElementById(id)。或者更好的是,将这个功能完全关闭并直接拨打document.getElementById

但是,如果它崩溃的现代浏览器如Firefox和Chrome,那么你也应该看看浏览器检测逻辑(用于填充nIEnVERnNN4变量的代码),否则可能刚刚结束了在其他地方崩溃。

+0

这工作完美!非常感谢。 – Codex73 2012-04-17 20:21:59

2

这是document.getElementById的“兼容性”功能。我认为你应该能够等于它:

stgobj = document.getElementById.bind(document); 
+0

非常感谢您的回答。 – Codex73 2012-04-17 20:24:37