停止从Yii中的assets文件夹加载jquery库

时间:2014-10-15 10:57:10

标签: php jquery jquery-ui yii

我的应用程序中遇到了问题,在查看了firebug后它变慢了 我注意到jquery-ui首先从google.com加载两次,第二次从assets文件夹加载(" 232kb")。

如何强制它从没有资产版本的google.com加载?

Firebug screenshot

查看内容" JavaScript调用Ajax函数":

....
     $(".third,#second-next,#fourth-pr").click(function () {

                $.ajax({
                    url: '<?php echo Yii::app()->createUrl('site/CallScientificForm',array('language'=>language())); ?>',
                    type: 'GET',
                    dataType: 'html',
                    beforeSend: function () {
                        $("#loading").show();
                    },
                    success: function (data, textStatus, xhr) {
                        $("#hr3").css("background", "#51a351");
                        $("*").removeClass("active");
                        $(".third").addClass("active");
                        $("#firstContent ,#secondContent,#thirdContent,#fourthContent").fadeOut(2000);
                        $("#thirdContent").html(data);
                        $("#thirdContent").fadeIn(2000);
                        $("#loading").hide();
                    },
                    error: function (xhr, textStatus, errorThrown) {
                        $('#' + id + ' .contentarea').html(textStatus);
                    },
                    complete: function() {
                        $(this).data('requestRunning', false);
                    }
                });

            });
...

控制器:

...
  public function actionCallScientificForm()
    {
        $scienceModel = new MembershipScientific();
        $view= $this->renderPartial('_ScientificForm', array('scienceModel' => $scienceModel, 'language' => language()), false, true);
        echo $view;
        Yii::app()->end();
    }
..

主要配置:

 'clientScript'=>array(
            'packages'=>array(
                'jquery'=>array(
                    'baseUrl'=>'http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/',
                    'js'=>array('jquery.js'),
                    'coreScriptPosition'=>CClientScript::POS_END
                ),
                'jqueryMin'=>array(
                    'baseUrl'=>'http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/',
                    'js'=>array('jquery.min.js'),
                    'coreScriptPosition'=>CClientScript::POS_END
                ),
                'jquery-ui'=>array(
                    'baseUrl'=>'https://code.jquery.com/ui/1.11.1/jquery-ui.min.js',
                    'js'=>array('jquery-ui.min.js'),
                    'depends'=>array('jquery'),
                    'coreScriptPosition'=>CClientScript::POS_END
                )
            ),
        ),

我在目标视图中称它为:

....
cs = Yii::app()->getClientScript();

$cs->registerCoreScript('jquery');
$cs->registerCoreScript('jquery-ui');
....

2 个答案:

答案 0 :(得分:3)

将它们设置为clientScript false 以防止加载。

您可以禁用的一些脚本示例:

'components' => array(
    'clientScript' => array(

        // disable default yii scripts
        'scriptMap' => array(
            'jquery.js'     => false,
            'jquery.min.js' => false,
            'core.css'      => false,
            'styles.css'    => false,
            'pager.css'     => false,
            'default.css'   => false,
        ),
    ),

答案 1 :(得分:1)

使用脚本地图:

'clientScript' => [
    'class' => 'CClientScript',
    'scriptMap' => [
         'jquery.js' => '//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js',
         'jquery.min.js' => '//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js',
         'jquery-ui.js' => '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js',
         'jquery-ui.min.js' => '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js'
    ],
....

还从包中删除jQuery和jQuery ui。这应解决双重注册问题。

注意:最好使用协议相对网址://example.com/blah/ - 这种方式也适用于https