引入外部js文件的加载

近日做了一个阿里云点播的上传和播放,需要在JSP页面中引入阿里云点播提供的js文件,通过<script>标签将需要的js引入。

在dom加载完成之后执行$(function(){})中的代码去创建阿里云的js提供的对象,结果却报错了:说阿里云提供的一个js对象没有定义。很奇怪,js文件明明引入了,而且通过F12的NetWork可以看到文件引入也是成功的,这是为什么呢?

原因在于$(function(){})中的代码的执行时机仅仅是在dom的结构全部加载完成之后,而不是在dom中的所有外部资源(js、图片等)加载完成之后执行,此时可以使用window.onload来代替$(function(){}),因为window.onload是在dom结构及其外部资源全部加载完成之后才会执行的。

还有一种方式将js的引入放在<body>标签中而不是<head>中,<body>中的内容是从先向后同步加载的,<head>中则可能会异步加载。

按说还有一种方式:在引入外部js的<script>标签中指定其async属性为false,即<script async="false" src="..."></script>将外部js文件的加载改为同步加载,此时再使用$(function(){})就没有问题了,这说明dom中引入的外部资源的加载方式默认是异步的,但却没什么卵用

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值