Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularjs是否在jQuery的回退中加载?_Javascript_Jquery_Html_Angularjs - Fatal编程技术网

Javascript angularjs是否在jQuery的回退中加载?

Javascript angularjs是否在jQuery的回退中加载?,javascript,jquery,html,angularjs,Javascript,Jquery,Html,Angularjs,在下面的代码中 <!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.m

在下面的代码中

<!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>

后退程序
if(typeof jQuery==‘未定义’)
文件。写(“”);
你好


考虑一个场景,其中GoogleCDN存在reach能力问题,触发了加载本地jQuery库(位于Web服务器中)的回退机制


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

后,该代码有两个问题,可能会使其行为不符合预期:

  • 脚本块中有一个文本
    。不管它是否在字符串中,它都会终止它所在的块。必须将其拆分,以便浏览器不会将其视为块的结尾:

    <script type="text/javascript">
        if(typeof jQuery === 'undefined')
            document.write('<script type="text/javascript" src="../localfolder/jquery.js"><\/script>');
            // Note the \------------------------------------------------------------------^
    </script>
    
  • 你在评论中问道

    我想知道
    document.write
    是否是异步执行

    不,它在函数运行时立即发生。在您的情况下,由于函数位于
    脚本
    标记的顶层,没有特殊属性,因此HTML解析器必须尖声停止并运行该JavaScript代码,处理JavaScript代码通过
    document.write输出的任何标记,等待JavaScript代码完成,然后再转到角度部分


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

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

  • 脚本块中有一个文本
    。不管它是否在字符串中,它都会终止它所在的块。必须将其拆分,以便浏览器不会将其视为块的结尾:

    <script type="text/javascript">
        if(typeof jQuery === 'undefined')
            document.write('<script type="text/javascript" src="../localfolder/jquery.js"><\/script>');
            // Note the \------------------------------------------------------------------^
    </script>
    
  • 你在评论中问道

    我想知道
    document.write
    是否是异步执行

    不,它在函数运行时立即发生。在您的情况下,由于函数位于
    脚本
    标记的顶层,没有特殊属性,因此HTML解析器必须尖声停止并运行该JavaScript代码,处理JavaScript代码通过
    document.write输出的任何标记,等待JavaScript代码完成,然后再转到角度部分


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

    为什么不加载它?
    Angularjs
    jquery
    是从不同的
    cdn
    加载的,
    Angularjs
    不需要
    jquery.js
    工作,或者更好地说,
    Angularjs
    不依赖于
    jquery.js
    。如果你的问题是关于
    document.write()
    调用是否会有问题,答案是否定的。@Pointy我想知道,
    document.write
    是否是异步执行,不能阻止页面下方的脚本。@overexchange不,不是。它将立即添加
    标记,然后浏览器要做的下一件事就是加载该脚本(jQuery,从您的服务器)并对其进行评估。然后它将转到角度导入。为什么不加载呢?
    Angularjs
    jquery
    是从不同的
    cdn
    加载的,
    Angularjs
    不需要
    jquery.js
    工作,或者说
    Angularjs
    不依赖于
    jquery.js
    。如果你的问题是关于
    document.write()
    调用是否会有问题,答案是否定的。@Pointy我想知道
    document.write
    是否是异步执行,不能阻止页面下方的脚本。@overexchange不,不是。它将立即添加
    标记,然后浏览器要做的下一件事就是加载该脚本(jQuery,从您的服务器)并对其进行评估。然后它将转到角度导入。