registerScript doesn't work with raw Javascript

I tried to register a raw Javascript in this way:

Yii::app()->clientScript->registerScript('myscript', '//Javascript here'); 

but it didn’t work. The registerScript only seems to work with jQuery. Is that true or am I wrong?

You are mistaken. And, jQuery is javascript too.

Is it possible to register google analytics code like this?

Yii::app() -> clientScript -> registerScript('analytics', '

  var _gaq = _gaq || [];

  _gaq.push([\'_setAccount\', \'UA-33333934-4\']);


  (function() {

	var ga = document.createElement(\'script\'); ga.type = \'text/javascript\'; ga.async = true;

	ga.src = \'/js/ga.js\';

	var s = document.getElementsByTagName(\'script\')[0]; s.parentNode.insertBefore(ga, s);



Yes, it should be done like that.

I’ve just tried to register analytics code but it’s not working!!!

I’ve checked the code for registerScript - I wasn’t aware that defaultScriptPosition is CClientScript::POS_READY, as in

registerScript($id,$script,$position=null,array $htmlOptions=array())

And with CClientScript::POS_READY the script is inserted in the jQuery’s ready function.

jQuery(function($) {



So to make sure you have got the plain js use

Yii::app()->clientScript->registerScript('name', 'js code here', CClientScript::POS_END);

or CClientScript::POS_BEGIN or CClientScript::POS_HEAD.

Brilliant, it worked!