【问题标题】:Prevent my version of JQuery from being used by another ISV防止我的 JQuery 版本被其他 ISV 使用
【发布时间】:2013-10-11 19:39:10
【问题描述】:

我今天有一位客户来找我,说我们的 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 文件本身中做一些事情来限制它。

【问题讨论】:

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


    【解决方案1】:

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

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

    你的externaljs.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 次。

    【讨论】:

    • 当问题是两个不同版本的 jQuery 冲突时,这会起作用吗?
    • 是的,这就是true 的用途。
    猜你喜欢
    • 2015-07-08
    • 2023-03-24
    • 1970-01-01
    • 2022-01-08
    • 2013-02-02
    • 1970-01-01
    • 2014-06-19
    • 2022-08-06
    • 2021-09-04
    相关资源
    最近更新 更多