2011-06-23 85 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調試器列出腳本,並可以看到內容,但由於某種原因,它不包括在內。

我發現這個問題,因爲我試圖從HTML頁面內的內聯腳本調用mainScript.js中的函數(內聯腳本定義在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> 

,它工作正常(Safari瀏覽器5.0.5 7533.21.1在Windows 7)。

幾個問題:

  1. 你試過從錯誤控制檯手動調用的功能?它工作嗎?
  2. 如果在文檔就緒功能之外放置簡單的alert("Test.");,它是否顯示?
  3. 如果你從錯誤控制檯調用jQuery的函數,你會得到什麼?做他們的工作?
+0

下跌很愚蠢。在長時間觀察這件事之後,發佈了這個問題,我找到了原因。腳本中還有其他的東西給了一個錯誤,所以整個腳本文件被跳過了。代碼'{class:'Test'}'適用於所有瀏覽器,Safari除外。它失敗了,因爲class是一個保留字。所以我想Safari在這裏調用錯誤是正確的,其他瀏覽器只是試圖變得更好:) –

1

該問題在mainScript.js的其他地方找到。

{ class: 'someclass' }作爲參數發送給某種方法,而類是保留字。

這也許應該在其他瀏覽器中出現錯誤,但他們很樂意忽略它並繼續前進。

的修復,現在只是將其更改爲{ 'class': 'someclass' }