2012-04-15 84 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 
})