外部jQuery Web应用程序崩溃与MooTools

时间:2014-10-13 14:27:43

标签: jquery web-applications mootools

应用版基于jQueryrequire.jshtmlcss - 一些使用此应用的网站也有MooTools.js,这个框架与我的应用冲突,可以与jQuery结合使用。

当应用程序启动时,所有外部来源(如需要工作的脚本和CSS)都会进入主机网页的head标记和HTML <div id="widget"/>

以下注塑代码:

<script language="javascript" type="text/javascript" src="code.jquery.com/jquery-1.8.2.js"></script>
<link href="@(ConfigurationSettings.AppSettings["AppPathFE"] + "outside-ip/widget.css")" />
<script src="@(ConfigurationSettings.AppSettings["AppPathFE"] + "outside-ip/widget.js")"></script>

<div id="widget"></div>

<script>      
    $(function () {
        WG.initialize({
            urlFE: '@(ConfigurationSettings.AppSettings["AppPathFE"])',
            urlBE: '@(ConfigurationSettings.AppSettings["AppPathBE"])',
            theme: 'base',
            lang: 'en-en',
            cache: false,
            logging: true,
            talk: {
                url: '@(ConfigurationSettings.AppSettings["AppTalk"])',
                logging: true,
            },
            air: {
                url: '@(ConfigurationSettings.AppSettings["AppAir"])',
                logging: true,
            },
        });
    });       
</script>

1 个答案:

答案 0 :(得分:3)

您需要使用jQuery代替$

MooTools使用$作为document.id的别名,基本上是document.getElementById但是具有MooTools权限。

因此,如果您将代码更改为此,则应该是安全的:
(您当然也要将脚本文件中的所有$更改为jQuery):

    jQuery(function () {
        WG.initialize({

而不是

    $(function () {
        WG.initialize({

您也可以在脚本代码中将(function($){ code here })(jQuery);中的所有代码包裹起来。因此,如果您的脚本将WG导出到全局空间,您可以:

var WG;
(function($){ 
    // all script code here, removing the var declaration inside the wrap function
})(jQuery);

或只是脚本内的window.WG