使用headscript()追加js文件时添加属性属性

时间:2014-07-21 04:00:53

标签: javascript php zend-framework2

这是我第一次使用php。我试图在我看到headscript()附加js文件的网站中优化js。

echo $this->headScript()->appendFile('/js/image-gallery/jquery.simplemodal.1.4.4.min.js');

在此我试图添加一个附加脚本标签的属性

$this->headScript()->setAllowArbitraryAttributes(true);
echo $this->headScript()->appendFile('/js/image-gallery/jquery.simplemodal.1.4.4.min.js', 

我也试过

$this->headScript()->setAllowArbitraryAttributes(true);
echo $this->headScript()->appendFile('/js/image-gallery/jquery.simplemodal.1.4.4.min.js',$attrs = array("async" => "true"))

array(“async”=>“true”));

文件中的php部分

    <?php
    $this->headScript()->setAllowArbitraryAttributes(true);
    echo $this->headScript()->appendFile('/js/image-gallery/jquery.simplemodal.1.4.4.min.js', $attrs = array("async" => "true"));
    ?>

我希望输出为

<script async="true" src="/js/image-gallery/jquery.simplemodal.1.4.4.min.js"></script>

相反,我得到了

<script type="Array" src="/js/image-gallery/jquery.simplemodal.1.4.4.min.js"></script>

如何解决?我无法找到通过headscript();

添加属性的任何示例

3 个答案:

答案 0 :(得分:2)

您需要将属性作为第三个参数

传递
$this->headScript()->appendFile(
  '/js/image-gallery/jquery.simplemodal.1.4.4.min.js', 
  null, 
  array('async' => 'true', 'foo' => 'bar')
); 

null这是&#39;类型&#39;属性,默认为text/javascript

答案 1 :(得分:0)

看起来您正在使用Zend框架。如果是这样,请参阅HeadScript Helper

您需要将属性作为$attrs = array()

传递
appendFile($src, $type = 'text/javascript', $attrs = array())

所以你的代码应该是

更新代码

echo $this->headScript()->appendFile('/js/image-gallery/jquery.simplemodal.1.4.4.min.js',  $type = 'text/javascript', $attrs = array("async" => "true"));

而不是

echo $this->headScript()->appendFile('/js/image-gallery/jquery.simplemodal.1.4.4.min.js', array("async" => "true"));

答案 2 :(得分:0)

默认情况下,禁用任意属性。要允许这些属性,可以通过setAllowArbitraryAttributes()方法启用它们:

$this->headScript()->setAllowArbitraryAttributes(true);

然后

echo $this->headScript()->appendFile('/js/image-gallery/jquery.simplemodal.1.4.4.min.js',  null, array("async" => "true"));