2012-04-17 117 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