【问题标题】:JavaScript file dependend on JavaScript code block in Yii2 (for dojo configuration)依赖于 Yii2 中 JavaScript 代码块的 JavaScript 文件(用于 dojo 配置)
【发布时间】:2015-08-12 12:11:29
【问题描述】:

我正在尝试使用 Yii 2.0 注册 dojo javascript 文件。 根据 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>

有什么建议吗?

【问题讨论】:

    标签: javascript php dojo yii2


    【解决方案1】:

    对于相同的位置,Yii2 总是先放置内联脚本,然后才是实际的外部文件。因此,您无法通过将它们都添加到 &lt;head&gt; 来解决此问题。

    最好给registerJsFile() 调用POS_END 以在最后加载它。在调用document.ready() 之前,它仍然会被加载。

    这样您就可以确保在加载之前解析了标头中的配置。在最坏的情况下,您可以在 body 标签打开后立即使用POS_BEGIN 加载它,但由于加载 javascript 被阻止,我会尽量避免这种情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-23
      • 2011-01-05
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多