在我的布局中,我使用了大量的JavaScripts。其中两个脚本是有条件的,它们只应为IE9加载。应该为所有浏览器加载剩余的一个。
为了达到这个目的,我在Bootstrap类中完成了以下操作。
$this->_view->headScript ()->appendFile ( '//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js', 'text/javascript', array('conditional' => 'lt IE 9'));
$this->_view->headScript ()->appendFile ( '//oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js', 'text/javascript', array('conditional' => 'lt IE 9') );
$this->_view->headScript ()->appendFile ( $this->_view->baseUrl ( '/assets/js/scripts.min.js?ver=1.0.0' ) );
这很有效,我在布局中得到了以下输出。
<!--[if lt IE 9]> <script type="text/javascript" src="//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script><![endif]-->
<!--[if lt IE 9]> <script type="text/javascript" src="//oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script><![endif]-->
<script type="text/javascript" src="http://om.localhost.com/assets/js/scripts.min.js?ver=1.0.0"></script>
上面的输出很好。但它建议我将条件脚本放在布局的head部分,剩下的脚本放在body的末尾。
有没有办法在ZF1中实现这个目标?
P.S。我尝试过使用占位符,但它没有用。而且我不想在布局中对这些脚本进行硬编码。
感谢您的帮助。
答案 0 :(得分:0)
在头部,您可以像代码一样使用headScript()
方法
在身体的末尾,您可以使用InlineScript()
这样的方法:
$this->view->InlineScript()->appendFile($this->view->baseUrl() .'/js/myfile.js');
并在布局结束时添加:
<?php
echo $this->InlineScript();
?>
要在引导程序中添加脚本,您可以像这样进行处理:
protected function _initView()
{
$options = $this->getOptions();
if (isset($options['resources']['view'])){
$view = new Zend_View($options['resources']['view']);
}
else{
$view = new Zend_View;
}
$view->InlineScript()->appendFile(...);
}