2012-04-15 82 views
2

我還不是一個有經驗的開發人員,所以請原諒我,如果我聽起來太不清楚或不夠清楚。我會盡力讓自己清楚。如果某些信息缺少您的見解,請告訴我,我將盡快跟進。使用API​​(帶有兩個jQuery版本和跨域的頁面)

所以,

公司我的工作有兩種不同的jQuery的版本(1.2和1.4)上運行的網頁。另外,我們通過一些不同的域名運行網站,例如:company.com,support.company.com,contact.company.com。 company.com運行在jQuery 1.4(我們只能用「$」訪問jQuery),另一個用於1.2(其中jQuery是「$ j」或「jQuery」)。

我們有一個API可以從產品中獲取很多信息,比如價格,圖片,描述符等。我們可以使用1.4版本的jQuery調用這個API。其他域我們無法通過此API獲取任何信息。

我們只能在這裏處理JavaScript和jQuery代碼來使其工作。我們無法訪問後端。

所以我的問題是:我應該從頁面上的這兩種環境中使API起作用的方法是什麼?我可以覆蓋最舊的版本嗎?這是一個跨域問題嗎?我在尋找什麼樣的思路解決這個問題?

我真的很希望我很清楚。如果沒有,請讓我知道,我會盡力澄清它。 :)

在此先感謝!

+0

一種方法是使用最新的jQuery for both(1.2?認真?恐龍仍然在1.2期間漫遊地球!)。這樣,你將不必處理兩個單獨的版本(和兩個單獨的命名空間) – Joseph 2012-04-15 18:26:08

+0

嘿約瑟夫! 感謝您的回答。 :) 我們已經試圖做出這種改變,但高級mgmt不想......真的不知道爲什麼... 當頁面加載時,是否可以通過javascript或jquery覆蓋版本? – 2012-04-15 18:29:26

回答

1

據我所知,jQuery在加載兩次時覆蓋自身,因爲它們都使用相同的$變量。 there is a way to make one go around並分配給另一個命名空間,而另一個保持原樣。

我認爲jQuery確實與舊API有一些向後兼容性。只要嘗試檢查您網站的API以驗證這些方法是否仍然存在。有些方法最近已被棄用。否則,你只需要使用最新的jQuery重建你的API。儘管如此,基本方法沒有什麼改變。您甚至可以使用最新的方法(那些在1.4之前還不存在的方法)獲得改進的性能。

並告訴高級管理層他們應該考慮創建兩個API的更好策略。不規劃API的可維護性和可擴展性的影響開始顯現。

1

嘗試:

<!-- load and register jQuery 1.2 --> 
<script src='jquery-1.2.js'></script> 
<script> 
    var jq12 = jQuery.noConflict(); 
</script> 

<!-- load and register jQuery 1.4 --> 
<script src='jquery-1.4.js'></script> 
<script> 
    var jq14 = jQuery.noConflict(); 
</script> 

當你需要jQuery的電話與jq12jq14,而不是與$jQuery

jq12('element').click(function() { 
    // Do things 
}) 

jq14('element').click(function() { 
    // Do things 
})