使用 API(带有两个 jQuery 版本和跨域的页面)
Posted
技术标签:
【中文标题】使用 API(带有两个 jQuery 版本和跨域的页面)【英文标题】:Working with API (page w/ two jQuery versions and cross-domain) 【发布时间】:2012-04-27 05:28:05 【问题描述】:我还不是经验丰富的开发人员,所以如果我听起来太笨拙或不够清晰,请原谅我。我会尽量说清楚。如果您的见解缺少某些信息,请告诉我,我会尽快跟进。
所以,
我工作的公司有两种运行不同 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 在页面上的两种环境中都能正常工作?我可以覆盖最旧的版本吗?这是一个跨域问题吗?我在这里寻找什么思路来解决这个问题?
我真的希望我很清楚。如果没有,请告诉我,我会尽力澄清。 :)
提前致谢!
【问题讨论】:
一种方法是对两者都使用最新的 jQuery(1.2?真的吗?恐龙在 1.2 期间仍然在地球上漫游!)。这样,您就不必处理两个单独的版本(和两个单独的命名空间) 嘿约瑟夫!感谢您的回答。 :) 我们已经尝试过进行这种更改,但是高级管理人员不想......真的不知道为什么......页面加载时是否可以通过javascript或jquery覆盖版本?跨度> 【参考方案1】:据我所知,jQuery 在加载两次时会覆盖自身,因为它们都使用相同的 $
变量。 there is a way to make one go around 并被分配到另一个命名空间,而另一个保持原样。
我认为 jQuery 确实与旧 API 有一些向后兼容性。只需尝试检查您网站的 API 以验证这些方法是否仍然存在。最近有些方法已被弃用。否则,您只需要使用最新的 jQuery 重新构建您的 API。但这不应该那么难,基本方法没有太大变化。您甚至可以使用最新方法(1.4 之前尚不存在的方法)提高性能
并告诉高级管理层,他们应该考虑比创建两个 API 更好的策略。不将 API 规划为可维护和可扩展的影响开始显现。
【讨论】:
【参考方案2】:试试:
<!-- 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>
当您需要使用 jq12
或 jq14
而不是 $
或 jQuery
的 jQuery 调用时。
jq12('element').click(function()
// Do things
)
jq14('element').click(function()
// Do things
)
【讨论】:
以上是关于使用 API(带有两个 jQuery 版本和跨域的页面)的主要内容,如果未能解决你的问题,请参考以下文章