gpt4 book ai didi

javascript - AngularJS 是否会在 jQuery 的回退中加载?

转载 作者:行者123 更新时间:2023-11-28 18:50:48 27 4
gpt4 key购买 nike

在下面的代码中,

<!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>
<小时/>

考虑一个场景,其中 google CDN 存在可达性问题,触发加载本地 jQuery 库(位于网络服务器中)的回退机制。

在这种情况下,是否加载了 angularjs 库?执行 document.write

最佳答案

该代码存在两个问题,可能会导致其行为不符合您的预期:

  1. 您有一个文字 </script> 脚本 block 内。它位于字符串内并不重要,它会终止它所在的 block 。您必须将其分解,以便浏览器不会将其视为 block 的结尾:

    <script type="text/javascript">
    if(typeof jQuery === 'undefined')
    document.write('<script type="text/javascript" src="../localfolder/jquery.js"><\/script>');
    // Note the \------------------------------------------------------------------^
    </script>

    \在JavaScript中没有意义,但阻止浏览器看到</script>从而避免过早结束脚本 block 。您看到它完成的其他方式是 '....<' + '/script>''...</scr' + 'ipt>'等等

  2. 您的src Angular 脚本上的 不正确,因此无论 jQuery 是否加载(或从哪里加载),它都不起作用。您已将 URL 设为相对于页面路径,但您至少需要通过添加 // 使其与协议(protocol)相关。 :

    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/angular.js/2.0.0-beta.0/angular2.js">
    </script>
    <!-- here --------------------------^ -->

您在评论中提问

I was wondering, whether document.write was an asynchronous execution

不,它会在函数运行时立即发生。在您的情况下,由于该函数位于 script 的顶层如果标签没有特殊属性,HTML 解析器必须紧急停止并运行 JavaScript 代码,处理 JavaScript 代码通过 document.write 输出的任何标记。 ,并等待 JavaScript 代码完成,然后再继续 Angular 部分。

浏览器很可能能够提前扫描以预加载 angular.js文件,但在解析器到达该文件的 script 之前,它不会执行该文件的内容。标记,因为脚本执行的顺序是明确定义的(例如,按照文档顺序),除非您使用 asyncdefer属性。

关于javascript - AngularJS 是否会在 jQuery 的回退中加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34495262/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com