目的:.ajaxStart()
でいくつかの機能を実行しますが、特定のイベントによって起動された場合にのみ実行します。Firefoxでグローバルイベントオブジェクトにアクセス
コード:
$('#loading_indicator').ajaxStart(function() {
if(event != null){
if(event.type == 'hashchange' || event.type == 'DOMContentLoaded'){
$(this).show();
$('#acontents').hide();
$(this).ajaxComplete(function() {
$(this).hide();
$('#acontents').show();
bindClickOnTable();
initFilterInput();
});
}
}
});
問題:これはFirefoxで動作しません。 Internet ExplorerとChromeでは、.ajaxStart(function()
に渡さずにイベントオブジェクトに喜んでアクセスできます。ただし、Firefoxではイベントオブジェクトはundefined
です。
明白ですが間違った解決策:event
オブジェクトを関数に渡します。これはajaxStartイベントに合格し、私のチェックはもはや動かないので、これは機能しません。
質問:この関数内でグローバルイベントオブジェクトにアクセスできるようにするにはどうすればよいですか?
おそらくないはずです。コールバックがFirefoxのイベントオブジェクトを渡されていない場合は、おそらくイベントへの応答としてトリガされません:-)むしろ、(.trigger経由ではなく)直接呼び出されたコードの「フック」の可能性があります。 –
です。おしゃれではありません: - /。 jQueryのドキュメントでは、この関数のスコープの仕方は不明ですが、間違いなく 'trigger'されています。 –