2017-08-10 69 views
1

我有一個使用jQuery.MD5庫的js代碼。它完美的作品在我的服務器上:

<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
    <script src="https://example.com/static/js/jquery.md5.js"></script> 
</head> 
<body> 
    <script> 
     // my code goes here (declaring variables and functions) 
     var code = $.md5('mystring'); 
     // and a little more code 
    </script> 
</body> 

但後來我把它上傳到Web應用程序(這是我無法控制),這使得它看起來像這一點,並把它放到一個iframe:

<head> 
    <script> 
    // some extra variables are declared here 
    // double-checked that nothing here can break my code 
    </script> 
</head> 
<body> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
    <script src="https://example.com/static/js/jquery.md5.js"></script> 
    <script> 
     // some code 
     var code = $.md5('mystring'); 
     // some code 
    </script> 
</body> 

這段代碼開始給我發出$.md5 is not a function錯誤。奇怪的事情。嘗試清除緩存,將jquery.md5.js代碼直接放入我的,沒有任何工作。

請注意,所有的代碼在我的機器上工作,所以我的JS一定沒有問題。

更新:有問題的代碼行爲似乎是不可預知的,這意味着有時它可以正常工作,無需更改。

什麼可能是錯的?

+2

嗯,「一些代碼」的初始塊可能會破壞某些東西,但是我們不能確定它是否屬實,因爲它不在問題中。 – Pointy

+0

@有點抱歉,忘了補充一點。我在那裏聲明函數和變量,沒什麼特別的。也檢查過。不知道是否將我的完整代碼放在這裏是一個好主意,因爲它太複雜了 –

+0

只是爲了縮小這裏的可能性,如果你使用webapp的頁面結構(在腳本標籤內部,腳本中額外的變量)在iframe之外,是否會拋出同樣的錯誤? –

回答

0

嗯......這有點令人尷尬,但問題出現在jQuery中。我包含在我的iframe中的那個與頁面中包含的一個衝突。不知何故,這會導致在其代碼結束後「隱藏」我的$ .md5函數。

是的,我知道,很明顯,jQuery可能會導致問題。

+1

切勿在同一頁面上使用多個版本的jQuery。您的**問題**非常常見,並且由於人們在同一頁面上包含多個版本(甚至多次使用相同版本)。 – Adam

+0

@亞當,是的,男人,現在感覺像一個總的nube:c –