以下のコードはChromeとIE(8)で機能しますが、Firefoxは「オーバーレイが定義されていません」と言っています。this.overlayまたは[this.overlay]の使用も機能しません。違いの原因とFirefoxでの修正方法は何ですか?
コード:
var ol = {
overlay: document.getElementById("overlay"),
build: function(e){
//todo: build elements dynamically
},
open: function(){
overlay.style.display = "block";
centerVertically();
ol.build();
},
close: function(){
overlay.style.display = "none";
}
};
前もって感謝します。
編集: ソリューションはスタンドアロン(JSfiddle)で動作しますが、プロジェクトでコードを使用すると失敗します。それはまったく意味がありません。このスクリーンショットマッシュアップを参照してください: 画像リンク
編集#2:
スクリプトタグをDOMの下部に移動すると、すべてが修正されました。なぜそんなことを考えなかったのかわかりません。それはおそらく最初からの問題でした-ChromeとIEは、クロージャーの問題があっても私の愚かさをうまく処理します。
しかし、私はあなたの返事を受け取ったので、今ではより安全なコードを書き、オブジェクト内のオブジェクトのプロパティに適切にアクセスする方法を知っています。ありがとう!