【问题标题】:How to check if angular is loaded correctly如何检查角度是否正确加载
【发布时间】:2013-11-13 13:33:02
【问题描述】:

假设我想从 CDN 引用 angularjs,但我还想要一个备用方案,以防对 CDN 的调用失败,例如指向本地 js 文件。当谈到 JQuery 时,我已经看到了一些示例,您可以在 javascript 中执行类似的操作:

if(typeof jQuery == 'undefined') {
    ....
}

对于 angularjs 有什么类似我可以做的吗?

【问题讨论】:

标签: angularjs


【解决方案1】:
if(typeof angular == 'undefined') {
    ....
}

【讨论】:

    【解决方案2】:

    您可以通过测试 angular JavaScript 对象是否为 undefined 来检测角度 CDN (Content Delivery Network) 是否正确加载了角度对象(即,如果 CDN 关闭,则会发生这种情况)。

    然后您应该回退到使用 document.write 加载的本地副本

    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.12/angular.min.js"></script>
    <script type="text/javascript">
        if(typeof angular == 'undefined') {
           document.write(unescape("%3Cscript type='text/javascript' src='/Scripts/angular.min.js'%3E%3C/script%3E"));
         }
    <script type="text/javascript">
    

    【讨论】:

      【解决方案3】:

      或者这样做:

      <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script>
      <script>(typeof angular != 'undefined') || document.write('<script src="js/angular.min.js")<\/script>')</script>
      

      【讨论】:

        【解决方案4】:

        我刚刚通过点击F12(或右键单击并选择Inspect element,然后输入angular)打开了控制台。

        如果您收到消息 Object {version: Object, callbacks: Object},则加载 angular。

        如果您收到消息Uncaught ReferenceError: angular is not defined,则未加载角度。

        【讨论】:

          【解决方案5】:
          if(window.angular === undefined) {
              ....
          }
          

          【讨论】:

            【解决方案6】:

            在开始知道代码是否已加载之前,我使用了这个简单的代码

            <body ng-app="">
             {{3  + 3}}
            </body>
            

            如果结果为 6,则表示您的角度已加载,否则未加载。

            【讨论】:

              【解决方案7】:

              对于 Angular 2 和更新的尝试

              window.ng
              

              在控制台中

              【讨论】:

                【解决方案8】:

                对于角度 11,您可以使用:

                if(document.getElementsByTagName('app-root')[0].attributes['ng-version'] === undefined){
                ...
                }
                

                【讨论】:

                  【解决方案9】:

                  你可以试试这样,当 Angular 应用完成加载时,这将返回 false。

                  window.getAllAngularTestabilities()[0]._ngZone.hasPendingMacrotasks
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2023-02-15
                    • 2018-04-30
                    • 2016-06-06
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-01-06
                    相关资源
                    最近更新 更多