【问题标题】:How to use defer for inline Javascript [duplicate]如何将延迟用于内联Javascript [重复]
【发布时间】:2014-12-04 19:21:52
【问题描述】:

我正在用 Laravel 用 PHP 开发一个网页。我想为我的 javascript 文件使用属性“defer”或“async”,但我有一些问题。 在每个文档中,我加载一个标题,其中包含:

{{ 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

我该如何解决这个问题? 而且,我正确地使用了“defer”属性?

【问题讨论】:

  • 不一样,因为我不能用这个方法。我在每一页都有一个标题,另一方面,我在每一页都有特定的功能。所以我不能把特定的功能放在顶部,因为每一页的顶部都是一样的。也因为我加载了视图,当我加载这个页面的视图时,我只加载了 div main 的包含,所以我无法访问页面的其余部分。
  • 而且建议的解决方案不使用延迟或异步,所以我猜“效率”较低
  • @proyecthd 我回复晚了,可能您已经找到了解决方案,但我添加了一个答案,可以帮助您访问 jsalonen 评论的链接。它不需要修改页眉/页脚上的任何内容,也不需要在脚本之前包含 jQuery(所以没有$ is not defined

标签: javascript jquery html performance laravel


【解决方案1】:

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

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

gulp concat scripts in order?

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

ReferenceError: $ is not defined

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 2013-05-28
    • 1970-01-01
    • 2017-05-14
    相关资源
    最近更新 更多