2011-02-06 18 views
1

我在我的Web應用程序中有各種JS庫,這些庫在我的主JS文件(main.js)之前加載。其中一個庫是jshashtable,但是當我嘗試在main.js中創建一個新的Hashtable對象時,Google Chrome和Firefox會拋出一個ReferenceError,抱怨該變量不存在。從另一個JS文件訪問對象時未捕獲到引用錯誤

這裏是<頭>應用程序的:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript" src="/static/jquery-1.4.4.min.js"></script> 
<script type="text/javacsript" src="/static/jshashtable-2.1.js"></script> 
<script type="text/javascript" src="/static/main.js"></script> 

這裏的問題是線在main.js:

posts = new Hashtable(); 

這一行是一個名爲init函數被調用時內部該頁面已完成加載(使用jquery $(document).ready()函數)。

爲什麼Hashtable不是全球性的?谷歌地圖和jquery對象沒有這樣的問題。 jshashtable的來源可以在Google code上看到。

回答

2

更新答案:問題是你有在script標籤一個錯字:

<script type="text/javacsript" src="/static/jshashtable-2.1.js"></script> 
<!--     ^^---- here (the letters are transposed)  --> 

我不明白爲什麼你會運行到一個問題,決定實際上禁止複製並粘貼您的腳本標籤並在我的機器上完全複製結構。事情停止了,我的世界逆時針傾斜了3 °,直到我終於盯着他們足夠長的時間纔看到它。

假設jshashtable代碼真的在/static/jshashtable-2.1.js,並且您的服務器正確地提供服務(仔細檢查開發工具中的Chrome資源選項卡),我看不到任何理由。您的腳本按正確的順序排列,並且jshashtable的文檔使用全球Hashtable(並且您給出的代碼鏈接清楚地顯示它創建了一個)。


編輯:我剛剛複製的,我自己的服務器上相同的結構(相同的腳本,同樣的順序,使用jQuery(document).ready(function() { ... });),和我沒有這個問題。我可以創建一個Hashtable並使用它的功能。

我的HTML:

<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-type" content="text/html;charset=UTF-8"> 
<title>Test Page</title> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type='text/javascript' src='jquery-1.4.4.js'></script> 
<script type='text/javascript' src='jshashtable-2.1.js'></script> 
<script type='text/javascript' src='main.js'></script> 
</head> 
<body> 
</body> 
</html> 

main.js

jQuery(document).ready(function() { 
    try { 
     var ht = new Hashtable(); 
     display("typeof ht = " + typeof ht); 
     display("ht.size() = " + ht.size()); 
    } 
    catch (e) { 
     display("Exception: " + e); 
    } 

    function display(msg) 
    { 
     $("<p>").html(msg).appendTo(document.body); 
    } 
}); 

唯一不同的是我沒有使用/static前綴,我絕對肯定,沒有什麼區別。

+0

我已驗證jshashtable腳本加載正確;代碼顯示在開發工具中,沒有錯誤。 – 2011-02-06 20:56:36