我的应用程序中遇到了问题,在查看了firebug后它变慢了 我注意到jquery-ui首先从google.com加载两次,第二次从assets文件夹加载(" 232kb")。
如何强制它从没有资产版本的google.com加载?
查看内容" 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');
....
答案 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