如何使用延迟内联Javascript

时间:2014-12-04 19:21:52

标签: javascript jquery html performance laravel

我正在使用Laravel开发PHP的网页。我想使用属性" defer"或" async"对于我的javascript文件,但我有一些问题。 在每个文档中,我加载一个包含以下内容的标题:

{{ Html::script('js/jquery.js', array('defer' => 'defer')) }}
{{ Html::script('js/bootstrap.min.js', array('defer' => 'defer')) }}

{{ Html::script('js/pjax.js', array('defer' => 'defer')) }}
{{ Html::script('js/jquery.cookie.js', array('defer' => 'defer')) }}
{{ Html::script('js/blur.js', array('defer' => 'defer')) }}
{{ Html::script('js/scrollbar.js', array('defer' => 'defer')) }}

<!--Form-->
{{ Html::script('js/parsley/parsley.remote.js', array('defer' => 'defer')) }}
{{ Html::script('js/parsley/parsley.js', array('defer' => 'defer')) }}
{{ Html::script('js/parsley/es.js', array('defer' => 'defer')) }}
{{ Html::script('js/icheck.js', array('defer' => 'defer')) }}

<!--Funciones-->
{{ Html::script('js/funciones.js', array('defer' => 'defer')) }}

如果我给他们属性async,那就不能正常工作,因为其中一些是模块化的。 所以我尝试使用defer属性并且我没有遇到此问题,但现在我对内联javascript有问题,因为它调用了标题的函数。 (这是在页面的底部)。

<script type="text/javascript">

window.addEventListener('popstate', function(e) { 
    eval(document.getElementById("script_biblioteca").innerHTML);
});


//Scripts on back/forward
section = 'biblioteca';
url_section = "{{Request::root()}}/"+section+"/";

activar_menu('#menu_biblioteca');
buscador('#dinamic_search', '#main', section);

</script>

错误:

ReferenceError: $ is not defined
ReferenceError: activar_menu is not defined

我该如何解决? 而且,我正在使用&#34; defer&#34;属性正确吗?

1 个答案:

答案 0 :(得分:0)

一种选择是使用Gulp在单个脚本中连接所有脚本。

这样你就不会有这个问题,也不必打开多个浏览器连接来下载多个js文件。

gulp concat scripts in order?

当您尝试使用Jquery但尚未加载时,您会收到以下消息:

ReferenceError: $ is not defined