2013-03-25 3 views
0

jquery.js (pagespeed 플러그인으로 표시) 및 기타 스크립트를 여러 번 가져 오기 때문에 웹 사이트 성능이 떨어졌습니다. 그래서 내 메인 레이아웃에, 나는 서식있는 텍스트 상자 편집기가 제대로 작동하지 않는, scriptMap 때문에 editMe 확장이 작동하지 않습니다.

<?php 
    $cs=Yii::app()->clientScript; 
    $cs->scriptMap=array(
     'jquery.js'=>false, 
     'jquery.ui.js' => false, 
    );?> 
... 
... 
    <head> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"></script> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js"></script> 
    .. 
    </head> 

그러나 가능한 한 빨리, 내가 메인 레이아웃에 위의 스크립트 맵을 추가

을 editMe했다.

아무도이 문제를 해결하는 방법을 말해 줄 수 있습니까? 또한 제 웹 사이트에서 여러 스크립트 가져 오기 문제를 해결하려면 어떻게합니까?

는 는

나는이 문제를 해결 ExtEditMe.php

public function run() { 
     // Register JavaScript files 
     Yii::app() -> clientScript -> registerCoreScript('jquery'); 
     Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl.'/js/jquery.js'); 
     Yii::app() -> clientScript -> registerScriptFile(self::$_ckeAssetUrl . '/' . md5(self::$_ckeAssetUrl) . '.js'); 
     Yii::app() -> clientScript -> registerScriptFile(self::$_ckeAssetUrl . '/ckeditor.js'); 
     Yii::app() -> clientScript -> registerScriptFile(self::$_ckeAssetUrl . '/adapters/jquery.js'); 
     // Generate textarea 
     $nameId = $this -> resolveNameID(); 
     $this -> htmlOptions['id'] = $nameId[1]; 
     if ($this -> hasModel()) { 
      echo CHtml::activeTextArea($this -> model, $this -> attribute, $this -> htmlOptions); 
     } else { 
      echo CHtml::textArea($this -> name, $this -> value, $this -> htmlOptions); 
     } 
     // Load CKEditor 
     $jquerySelector = CJavaScript::encode('#' . $this -> htmlOptions['id']); 
     $ckeConfig = CJavaScript::encode($this -> _ckeGenerateConfig()); 
     Yii::app() -> clientScript -> registerScript('editMe_' . $this -> htmlOptions['id'], 'jQuery(' . $jquerySelector . ').ckeditor(' . $ckeConfig . ');', 2); 
    } 

답변

1

에 다음과 같은 코드를 볼 수있다, 나는

ExtEditMe.php가 유지되고, 반면

<?php 
$cs=Yii::app()->clientScript; 
$cs->scriptMap=array(
    'jquery-ui.min.js' => false, 
    'jquery.min.js'=>false, 
);?> 
... 
... 
    <head> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js"></script> 
    .. 
    </head> 

아래로 내 주요 레이아웃을 수정 한 jquery.js를 사용하는 모든 곳에서도 jquery-min.js가 사용됩니다.

관련 문제