2

我还不是经验丰富的开发人员,所以如果我听起来太笨拙或不够清晰,请原谅我。我会尽量说清楚。如果您的见解缺少某些信息,请告诉我,我会尽快跟进。

所以,

我工作的公司有两种运行不同 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,它可以从产品中检索很多信息,比如价格、图片、描述等。我们可以在 jQuery 1.4 版本的页面上调用这个 API。其他域我们无法通过此 API 获取任何信息。

我们只能在这里处理 javascript 和 jquery 代码以使其工作。我们无权访问后端。

所以我的问题是:我应该用什么方法来使 API 在页面上的两种环境中工作?我可以覆盖最旧的版本吗?这是一个跨域问题吗?我在这里寻找什么思路来解决这个问题?

我真的希望我很清楚。如果没有,请告诉我,我会尽力澄清。:)

提前致谢!

4

2 回答 2

1

据我所知,jQuery 在加载两次时会覆盖自身,因为它们都使用相同的$变量。有一种方法可以让一个人四处走动并分配到另一个命名空间,而另一个保持原样。

我认为 jQuery 确实与旧 API 有一些向后兼容性。只需尝试检查您网站的 API 以验证这些方法是否仍然存在。最近有些方法已被弃用。否则,您只需要使用最新的 jQuery 重新构建您的 API。但这不应该那么难,基本方法没有太大变化。您甚至可以使用最新的方法(那些在 1.4 之前尚不存在的方法)获得改进的性能

并告诉高级管理层,他们应该考虑比创建两个 API 更好的策略。不将 API 规划为可维护和可扩展的影响开始显现。

于 2012-04-15T18:38:18.643 回答
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>

当您需要使用jq12orjq14而不是使用$or的 jQuery 调用时jQuery

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

jq14('element').click(function() {
    // Do things
})
于 2012-04-15T18:45:28.263 回答