2011-11-22 6 views
1

私は入力に慣れています:$(function(){});イベントを配線し、document readyイベントで他のものを実行する構文です。しかし、私は、IE8がいくつかのインクルードされたjsファイルから関数を呼び出す際に問題を引き起こしていることに気付きました。ページにデザイナーのコードがないと(彼はスライドショーをいくつか入れました:D)、私はそれを解読することができませんでした。スライドショーのコードは古い$(document).ready(function(){});の構文を使用していました。私は自分のコードを削除し、スライドショーのinitコードを付けて作業を開始しました。Wiring document.readyイベント:IEは異なる動作をします

私はこの奇妙な動作を理解することはできませんが、もう一度このバグに噛まれないようにしたいと思います。それは含まれているファイルは、readyイベントの発生後にダウンロードされますか?

EDIT:すべてのインクルードファイルのダウンロードが終了している

<script src="jquery.js" type="text/javascript"></script> 
<script src="custom.js" type="text/javascript"></script> 

$(function(){ 
    myCustomFunction(); ///THIS IS CAUSING EXCEPTION IN IE 8 
}); 


$(document).ready(function(){ 
    myCustomFunction(); ///THIS IS WORKS IN IE 8 
}); 

答えて

1

readyイベントのみ火事の後、それはそれはのためだものです。

私も前に同様の問題に遭遇したが、適切にそれは私のスクリプトによるもので閉鎖されていないタグ、ここを見て:How does $(document).ready() work in IE 8?

+0

これは私が想定しているとおりです。リンクをありがとう。 – TheVillageIdiot

+0

リンク先の質問に記載されている内容ではありません。 jQueryが確実に含まれ、 '$(function(){})'が入力されます。 – TheVillageIdiot

0

jQueryのは、まだロードされていないため、問題が発生する可能性があり、してみてください次のコードを実行し、テストにあなたの$(ドキュメント).readyコードの前に:

if (jQuery) alert('jquery loaded') 
else alert('jquery not loaded') 

私たちは、それがIE8た場合は覚えていないことができ、同様のブラウザの互換性の問題がありました。これはスクリプトタグの 'type'属性に起因していました。

「text/javascript」(the W3C recommendation)、「application/javascript」、タイプ属性がないものがあります。 JQueryはヘッダーの上部に 'text/javascript'とラベル付けされていましたが、まだ最後にロードされていました。

すべてのスクリプトタグに同じContentTypeを設定することで問題は簡単に解決されました

+0

jQueryが読み込まれています。 '$(function(){}) 'に入りますが、他のインクルードファイルからのこの関数内のコードは呼び出されません。 – TheVillageIdiot

関連する問題