2011-06-23 18 views
1

Safariを除くすべてのブラウザで機能する一部の機能に問題があり、問題を軽減しました。その後Safariでスクリプトを実行する際に問題が発生しました

<script type="text/javascript" src="../../Scripts/jquery-1.5.1.min.js"></script> 
<script type="text/javascript" src="../../Scripts/jquery-ui-1.8.11.min.js"></script> 
<script type="text/javascript" src="../../Scripts/jquery.ui.autocomplete.html.js"></script> 
<script type="text/javascript" src="../../Scripts/jquery.validate.min.js"></script> 
<script type="text/javascript" src="../../Scripts/jquery.textchange.min.js"></script> 
<script type="text/javascript" src="../../Scripts/jquery.reveal.js"></script> 
<script type="text/javascript" src="../../Scripts/mainScript.js"></script> 

mainScript.jsファイル内に、私は次のコードを入れている:私は私の体要素の末尾に次のスクリプト宣言を持っている私のページで

$(function() { 
    alert("found"); 
}); 

を他のすべてのブラウザでは、メッセージボックスを表示しますが、Safariでは何もしません。

Safariのjavascriptデバッガでスクリプトが一覧表示され、内容が表示されることがありますが、何らかの理由でそれが含まれていません。

mainScript.jsの関数をhtmlページ内のインラインスクリプト(mainScript.js定義の下にインラインスクリプトが定義されています)から呼び出そうとしていたので、この問題が見つかりました。Safariデバッガは関数がどこにも見つかりませんでした。

私はここで何が間違っているのですか。なぜSafariにこのスクリプトが含まれていないのですか?すべてのjqueryスクリプトが含まれ、正常に動作しています。

答えて

1

あなたのコードは良さそうです。

私はこのコード

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Test</title> 
    </head> 
    <body> 
     <h1>Test</h1> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" type="text/javascript"></script> 
     <script type="text/javascript"> 
      $(function() { 
       alert("Test"); 
      }); 
     </script> 
    </body> 
</html> 

にしようと、それは(Windows 7の上のSafari 5.0.5 7533.21.1)正常に動作します。

質問のカップル:

  1. はあなたがエラーコンソールから手動で関数を呼び出してみましたがありますか?それは動作しますか?
  2. alert("Test.");をドキュメントレディ機能の外に置くと、それは表示されますか?
  3. エラーコンソールからjQueryの関数を呼び出すと、何が得られますか?彼らは働きますか?
+0

にそれを変更するだけだったが、今は本当に愚かフェル。長いことこれを見て、この質問を投稿すると、私はこれの理由を見つけました。スクリプト内にエラーが発生したため、スクリプトファイル全体がスキップされました。 '{class: 'Test'}'というコードはSafari以外のすべてのブラウザで動作します。 classは予約語なので失敗します。だから私はSafariがここでエラーを呼び出すのが正しいと思うし、他のブラウザはちょうど良いものにしようとしています:) –

1

問題はmainScript.jsのどこかに見つかりました。

{ class: 'someclass' }がパラメータとしていくつかのメソッドに送信され、classは予約語です。

これはおそらく他のブラウザでもエラーが発生しているはずですが、喜んで無視し続けています。

修正が{ 'class': 'someclass' }

関連する問題