【问题标题】:Jquery is not defined when remove "text/javascript" attribute删除“text/javascript”属性时未定义 Jquery
【发布时间】:2021-12-14 11:55:47
【问题描述】:

可行的方案:

  • 我有一个通过WEBPACK 生成的APP_FRAMEWORK.JS 文件,其中包括BOOTSTRAP AND JQUERY

    <script type="text/javascript" src="{{ asset('js/app_framework.js') }}" defer></script>
    
    @if(!empty($assets['js']))
        @foreach ($assets['js'] as $js)
            <script type="text/javascript" src="{{ asset($js) }}"></script>
        @endforeach
    @endif
    

如果我按照示例加载页面,它可以完美运行,在下面的循环内加载的脚本中没有任何错误。

我的问题:

  • 为什么,如果我在加载MAIN SCRIPT (APP_FRAMEWORK.JS) 时删除“text/javascript”,就会开始出现$ is not defined 错误?
  • 记住这个TYPE 不再是强制性的,脚本以正确的顺序加载并且有一个DEFER!!!

【问题讨论】:

  • 您使用的是哪个版本的 jQuery?
  • "如果我删除 "text/javascript"" 你删除 "text/javascript"type="text/javascript"?
  • type="text/javascript"
  • 版本:"version": "3.6.0"
  • type="text/javascript" 没问题,只是不要defer jquery

标签: javascript html jquery laravel web


【解决方案1】:
  1. 强制浏览器不从缓存加载脚本(SHIFT + RELOAD 在 Mac 上) 通过这样做,我们已经看到 APP_FRAMEWORK.JS 在其他人之后被加载。

  2. 另外一点,defer 不会阻止加载其他脚本,直到那些定义了它的脚本执行它们的进程。 defer 属性的定义更进一步,是:

    defer 属性告诉浏览器仅在 HTML 解析完成时才运行脚本。 该脚本将被异步请求,它的下载将完成,只有当 HTML 文档的分析完成时,它才会被执行。即使完整的脚本下载发生在完整的 HTML 解析之前,它也不会在稍后运行。 如果您有多个带有defer 属性的脚本元素, 它们将被并行请求并按规定的顺序执行。

  3. 由于脚本位于页面底部,因此无需使用defer,因为它永远不会停止解释 HTML 以下载任何 JS。

  4. 问题本身与type="text/javascript"无关,一切都与加载脚本的大小、下载时间有关,从依赖和执行的顺序来看。

  5. 如果你真的需要遵循一个JS加载顺序,defer必须在所有&lt;script defer&gt;中使用,使其遵循声明的顺序,因此:

<script defer src="{{ asset('js/app_framework.js') }}" defer></script>
<script defer src="{{ asset('js/app.js') }}"> others ...</script>

@if(!empty($assets['js']))
    @foreach ($assets['js'] as $js)
        <script defer src="{{ asset($js) }}"></script>
    @endforeach
@endif

参考链接:https://www.braziljs.org/p/diferencas-entre-async-e-defer

现在来了一个不想闭嘴的问题...... 为什么即使以正确的顺序从缓存中加载文件,浏览器也会显示消息?

有没有人根据这些文件从浏览器中听说过error cache?就像,看到脚本是一样的,这些脚本的最后一次执行出错并且已经自动显示错误?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    相关资源
    最近更新 更多