2012-04-17 15 views
1

私は、ナビゲーションの垂直メニューを実行する非常に古いJavaScript関数を持つページにmootoolsスクリプトを統合しています。この古いスクリプトは今変更するのが難しいでしょう。古いJavaScript関数がクラッシュするブラウザ

改行は次のとおりです。

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

ないことが目的だが、それはいくつかの要素をレンダリングしているように見える正確に何を確認してください。コメントがあれば、メニューは消えます。

FF、クローム、IE(クラッシュしませんが、メニューはレンダリングされません)

どれ迅速なパッチクラッシュのブラウザを解決するには?

答えて

3

目的は、指定されたIDに対応する要素を返すように見えます。このコードではブラウザに基づいたいくつかの異なるメソッドを使用しています。つまり、IE5以前の場合はdocument.all、Netscape 4の場合はdocument.layersです。これらの古代のブラウザをサポートする必要がある場合を除き、関数を変更してちょうどdocument.getElementById(id)に戻すことができます。または、この機能を完全に廃止し、document.getElementByIdに直接電話することをお勧めします。それは、FirefoxやChromeなどの近代的なブラウザをクラッシュだ場合

しかし、あなたはまた、ブラウザ検出ロジック(nIEnVERnNN4変数を移入コード)をご覧くださいそれ以外の場合は、単に他の場所でクラッシュに終わるかもしれません。

+0

これは完全に機能しました!本当にありがとう。 – Codex73

2

これはdocument.getElementByIdの「互換性」機能です。私はあなたがそれと同等にできるはずだと思います:

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

お返事ありがとうございました。 – Codex73

関連する問題