javascript - 删除“text/javascript”属性时未定义 Jquery
问题描述
有效的场景:
我有一个
APP_FRAMEWORK.JS
通过 a 生成的文件WEBPACK
,包括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)
为什么,如果我在加载$ is not defined
错误开始出现时删除“text/javascript” ?- 请记住,这
TYPE
不再是强制性的,脚本以正确的顺序加载,并且有一个DEFER
!!!
解决方案
强制浏览器不从缓存中加载脚本(在 Mac 上 为SHIFT + RELOAD ) 仅仅通过这样做,我们已经看到
APP_FRAMEWORK.JS
正在加载其他脚本。另一点,
defer
在定义了它的脚本执行其进程之前,不会阻止加载其他脚本。属性的定义defer
更进一步,即:该
defer
属性告诉浏览器仅在 HTML 解析完成时才运行脚本。该脚本将被异步请求,它的下载将完成,只有当 HTML 文档的分析完成时,它才会被执行。即使完整的脚本下载发生在完整的 HTML 解析之前,它也不会在稍后运行。如果您有多个具有该defer
属性的脚本元素,它们将被并行请求并按规定的顺序执行。由于脚本位于页面底部,因此无需使用
defer
,因为它永远不会停止解释 HTML 以下载任何 JS。问题本身与问题无关
type="text/javascript"
,一切都与加载脚本的大小、下载时间、依赖顺序和执行顺序有关。如果确实需要遵循 JS 加载顺序,
defer
必须在 all 中使用<script defer>
,使其遵循声明的顺序,因此:
<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
基于这些文件的浏览器?就像,看到脚本是相同的,这些脚本的最后执行给出了错误并且已经自动显示错误?
推荐阅读
- c - 将值插入最大二进制堆时出现问题
- class - Haskell 无法将预期类型 'Item Nat' 与实际类型 '()' 匹配
- javascript - 如何动态地将类分配给html元素?
- c# - 我可以使用角度访问 c# HttpContext.Current.Session 吗?
- javascript - 如何根据输入值数组从对象数组返回匹配结果
- docker - 重启后 Docker 容器全部消失
- json - Pachyderm 管道未启动作业并启动空存储库
- asp.net-mvc - 如何在 Asp.Net MVC 的异步任务中与模型一起返回视图
- java - MediaMetadataRetriever.setDataSource() 上的 IllegalArgumentException
- python - BeautifulSoup:搜索 .text 属性