我试图注册dojo javascript文件与Yii 2.0。根据dojo文档,dojo配置的代码块必须在实际dojo.js之前加载才能被考虑。但是,在HTML输出中,我的自定义javascript代码总是加载在dojo.js之后。
这是我的代码:
$this->registerJs('dojoConfig="async:true,isDebug:true";', $this::POS_HEAD,'dojoconfiguration');
$this->registerJsFile('/dojo_toolkit/dojo/dojo.js', ['depends' => ['yii'web'JqueryAsset::className()], 'position' => yii'web'View::POS_HEAD]);
在HTML中是这样的
<script src="/dojo_toolkit/dojo/dojo.js"></script>
<script type="text/javascript">dojoConfig="async:true,isDebug:true";</script>
建议吗?
对于相同的位置,Yii2总是先放内联脚本,然后才是实际的外部文件。所以你不能通过将它们都添加到<head>
.
最好在最后给registerJsFile()
调用一个POS_END
来加载它。它仍然会在document.ready()
调用之前被加载。
这样,您可以确保在加载之前解析头文件中的配置。最坏的情况下,你可以使用POS_BEGIN
加载后,正文标签打开,但由于加载javascript是阻塞,我会尽量避免。