如何使用谷歌的外部托管jquery覆盖核心jquery文件

Ben*_*owe 6 php jquery google-api yii

在Yii中,目前jquery的所有依赖项都在加载jquery的本地版本,我认为它是1.6.*,未缩小.

有点像:

<script src="/assets/2343/js/jquery.js"></script>
Run Code Online (Sandbox Code Playgroud)

我想更新核心jquery依赖以使用来自谷歌的jquery 1.7.*

基本上我想包括

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"> 
Run Code Online (Sandbox Code Playgroud)

每当jquery是一个依赖时,在我所有页面的底部.

Ben*_*owe 25

经过一番谷歌搜索和环顾四周,我找到了答案:

在配置中,在'组件'下

'clientScript'=>array(
  'packages'=>array(
    'jquery'=>array(
      'baseUrl'=>'http://ajax.googleapis.com/ajax/libs/jquery/',
        'js'=>array('1.7.2/jquery.min.js'),
      )
    ),
  ),
),
Run Code Online (Sandbox Code Playgroud)

  • @BenRowe:包括一个链接,帮助你对将来遇到这个答案的人非常有帮助. (2认同)
  • 如果您希望jquery包含在所有视图中,这是很好的.如果你只想在特定视图中使用它,可以这样做:`Yii :: app() - > clientScript-> packages ['jquery'] = array('baseUrl'=>'/ js/jquery /', 'js'=> array('jquery-1.8.3.min.js'));`:) (2认同)

boo*_*dev 14

在yii的文档中还有另一种方法:

例如,我们可以包含来自Google服务器的jquery.js而不是我们自己的服务器.为此,我们首先按如下方式配置scriptMap,

$cs=Yii::app()->clientScript;
$cs->scriptMap=array(
 'jquery.js'=>false,
 'jquery.ajaxqueue.js'=>false,
 'jquery.metadata.js'=>false,
 ......
);
Run Code Online (Sandbox Code Playgroud)

通过将这些脚本文件映射为false,我们阻止Yii生成包含这些文件的代码.相反,我们在页面中编写以下代码以明确包含来自Google的脚本文件,

<head>
<?php echo CGoogleApi::init(); ?>

<?php echo CHtml::script(
 CGoogleApi::load('jquery','1.3.2') . "\n" .
 CGoogleApi::load('jquery.ajaxqueue.js') . "\n" .
 CGoogleApi::load('jquery.metadata.js')
 );
?>
......
</head>
Run Code Online (Sandbox Code Playgroud)