Yii客户端脚本

Yii客户端脚本,yii,clientscript,Yii,Clientscript,我想知道有没有办法检查coreScript是否已经注册 例如,yiiactiveform Yii::app()->clientScript->registerCoreScript('yiiactiveform') 如何检查此corescript是否已注册? 谢谢你为什么要知道这些?该框架足够智能,不会两次注册同一个脚本 我觉得你可以用 if(Yii::app()->clientScript->getPackageBaseUrl('yiiactiveform') === false)

我想知道有没有办法检查coreScript是否已经注册

例如,yiiactiveform

Yii::app()->clientScript->registerCoreScript('yiiactiveform')

如何检查此corescript是否已注册?
谢谢你为什么要知道这些?该框架足够智能,不会两次注册同一个脚本

我觉得你可以用

if(Yii::app()->clientScript->getPackageBaseUrl('yiiactiveform') === false) {
  // core script 'yiiactiveform' has not been registered yet
}

或者扩展CClientScript并实现一个函数来回答这个问题,但这可能有点过头了。

如果你在做页面内容,加载内容,你可能(取决于你的情况)最好使用renderPartial()而不是render,这不会呈现头部,因此包含任何注册的核心脚本。这是一个选项吗?

因为我使用jquery ajax,在加载url时,我会删除corescripts,因为如果我没有。。它将复制。因此,我需要检查corescript是否已经注册,并使用Yii::app()->clientScript->scriptMap()删除它;谢谢你的回答,这很有帮助!是的,我使用renderPartial,因为我通过ajaxrequest加载内容,并且在renderPartial中,我processOutput=true,因此renderPartial中的jquery将返回,但是如果当前页面已经在renderPartial中生成了jquery。。它仍然会生成代码,因此,例如,我有一个带有事件警报()的ajaxLink。。它将发出两次警报。ajax查询不是用jQuery进行的吗?假设您发出了一个Ajax请求,那么已经加载了jQuery,这不安全吗?因此,如果Yii::app()->request->isAjaxRequestOn我在控制器中的init函数上已经声明了coreScript jquery.js,然后在我的ajaxRequest上移动到另一个页面,我使用renderPartial w/ProcessOutput True并将其设置为True,则jquery.js也被称为,因为该renderPartial中有jqueryscripts,为了避免这种情况,我使用了以下代码
(Yii::app()->clientScript->getPackageBaseUrl('jquery')==false)
来检查coreScript是否已经存在。但是我仍然有一些问题,一些核心脚本在渲染部分之后注册,比如yiiactiveform,不管它是否已经被使用,它总是返回false