1

今天有个客户来找我,说我们的 JQuery 文件干扰了其他供应商的产品。

该场景是 MS CRM 2011。我们在功能区中有一些需要 JQuery 的按钮。不幸的是,这最终导致我们的脚本文件无处不在,而不仅仅是我们需要它们的地方。

另一家供应商也在其实体上使用 JQuery。因为我们在功能区中有我们的脚本,所以其他供应商的两组脚本都存在,并且版本不匹配。它导致其他供应商出错。

我们显然在这里错了,但我不知道该怎么做才能解决它。我们已经有了一个别名,但这似乎只适用于我们自己的脚本,所以我们最终不会使用其他人的 JQuery 版本。另一家供应商将使用他们的 JQuery 版本来解决这个问题,但我不想在未来给其他任何人造成这个问题。

有什么方法可以在实际的 JQuery 文件中创建别名,而不仅仅是我们自己的脚本?本质上,我想防止其他人意外使用我的 JQuery 文件。

EDIT1:为了澄清,我们将 JQuery 作为 Web 资源包含在 MS CRM 中,并将其作为附加库包含在按钮中。我们按照此处描述的方式执行此操作:http ://rajeevpentyala.wordpress.com/2012/05/23/loading-dependent-jscript-libraries-in-ribbon-buttons-execution-crm-2011/ 没有传统的包含行,因此我希望我可以在实际的 JQuery 文件本身中做一些事情来限制它。

4

1 回答 1

2

解决它的最佳方法是不要在您的代码中使用 3rd 方库。但是,由于这可能不是一种选择,这里有另一种解决方法:

<script src="jquery.js"></script>
<script src="yourexternaljs.js"></script>

你的外部js.js:

(function($){
    // you are free to use $ inside of this area without conflicting with anyone elses code.
    $(document).ready(function(){
        alert("dom is ready.");
    })
})(jQuery.noConflict(true));

根据您的编辑,是的,您可以进入 jquery.js 并将所有对 window.jQuery 和 window.$ 的引用更改为您想要的任何内容,它应该只出现 2-4 次。

于 2013-10-11T19:43:50.887 回答