angularjs是否在jQuery的回退时加载
Does angularjs gets loaded on fallback of jQuery?
在下面的代码中,
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Falback procedure</title>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js">
</script>
<script type="text/javascript">
if(typeof jQuery === 'undefined')
document.write('<script type="text/javascript" src="../localfolder/jquery.js"></script>');
</script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/angular.js/2.0.0-beta.0/angular2.js">
</script>
</head>
<body>
<p>Hello</p>
</body>
</html>
考虑一个场景,其中googleCDN具有可访问性问题,触发加载本地jQuery库(位于webserver中)的回退机制。
在这种情况下,angularjs库是否被加载?执行document.write
后
您的代码有两个问题,这可能会使它的行为与您预期的不一样:
-
您在脚本块中有一个文本
</script>
。它在字符串中并不重要,它终止了它所在的块。你必须将其分解,这样浏览器就不会将其视为块的末尾:<script type="text/javascript"> if(typeof jQuery === 'undefined') document.write('<script type="text/javascript" src="../localfolder/jquery.js"><'/script>'); // Note the '------------------------------------------------------------------^ </script>
'
在JavaScript中没有任何意义,但可以防止浏览器看到</script>
,从而提前结束脚本块。你看到它完成的其他方式是'....<' + '/script>'
或'...</scr' + 'ipt>'
等。 -
Angular脚本上的
src
不正确,因此无论jQuery是否加载(或从何处加载),它都无法工作。您已经使URL相对于页面的路径,但您需要通过添加//
:使其在至少协议上相对<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/angular.js/2.0.0-beta.0/angular2.js"> </script> <!-- here --------------------------^ -->
在评论中,你问
我想知道
document.write
是否是异步执行
不,当函数运行时会立即发生。在您的情况下,由于该函数位于script
标记的顶层,没有特殊属性,HTML解析器必须急停并运行该JavaScript代码,处理JavaScript代码通过document.write
输出的任何令牌,并等待JavaScript代码完成后再转到Angular部分。
浏览器可能能够提前扫描以预加载angular.js
文件,但在解析器到达该文件的script
标记之前,它不会执行该文件的内容,因为除非使用async
或defer
属性,否则脚本执行的顺序是明确定义的(例如,按文档顺序)。
- 一旦加载并渲染了角度引导typeahead,就使用回调
- 当CDN加载失败时,为字体添加一个本地CSS回退
- 设置计时器以等待为flash回退视频播放器加载swfobject脚本
- 如何为未加载、加载时间过长和被阻止的css文件编写回退
- JQuery/Javascript:如何将一个东西放回页面加载上的位置
- 角度 - 使用具有回退功能的动态路径加载自定义模板
- 检测角度依赖关系 [角度路由、角度资源等] 是否已加载用于 CDN 回退
- 按顺序加载图像,有延迟,无脚本回退
- 比较两种回退机制加载本地jQuery库的方法
- angularjs是否在jQuery的回退时加载
- 检查是否已加载外部样式表以进行回退
- 如果图像已经加载,则jQuery.load()回退
- 当应用程序缓存回退url不可加载时会发生什么
- 什么是通过回调加载谷歌API或谷歌的区别.加载或简单的脚本块
- 引导-当有一个图像加载错误时回退
- 优化器中不支持路径回退(“重新加载”)
- WAAPISim Polyfill-如何使用.wav回退加载.mp3
- requiredjs失败以加载回退
- Javascript - 加载内容、回调和加载
- 画布回退到闪存正在加载图像