防止我的JQuery版本被另一个ISV使用

时间:2013-10-11 19:39:10

标签: jquery dynamics-crm-2011 dynamics-crm alias multiple-versions

今天有一位客户来找我,我们的JQuery文件正在干扰其他供应商的产品。

场景是MS CRM 2011.我们在功能区中有一些需要JQuery的按钮。不幸的是,最终导致我们的脚本文件出现在功能区的任何地方,而不仅仅是我们需要它们的位置。

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

我们在这里显然是错的,但我不知道如何解决它。我们已经有了一个别名,但这似乎只适用于我们自己的脚本,因此我们最终不会使用其他人使用的JQuery版本。另一家供应商将为他们的JQuery版本添加别名来解决问题,但我不想在将来为其他任何人造成这个问题。

有没有办法在实际的JQuery文件中创建别名而不仅仅是我们自己的脚本?基本上我想阻止其他人不小心使用我的JQuery文件。

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

1 个答案:

答案 0 :(得分:2)

解决问题的最佳方法是不在代码中使用第三方库。但是,由于这可能不是一种选择,这是另一种解决方法:

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

yourexternaljs.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次。