假设我想从 CDN 引用 angularjs,但如果对 CDN 的调用失败,例如指向本地 js 文件,我也想要一个后备。当谈到 JQuery 时,我已经看到了一些示例,您可以在 javascript 中执行以下操作:
if(typeof jQuery == 'undefined') {
....
}
我能做的 angularjs 有什么类似的吗?
假设我想从 CDN 引用 angularjs,但如果对 CDN 的调用失败,例如指向本地 js 文件,我也想要一个后备。当谈到 JQuery 时,我已经看到了一些示例,您可以在 javascript 中执行以下操作:
if(typeof jQuery == 'undefined') {
....
}
我能做的 angularjs 有什么类似的吗?
if(typeof angular == 'undefined') {
....
}
我只是通过点击F12
(或右键单击并选择Inspect element
,然后输入angular
.
如果您收到消息Object {version: Object, callbacks: Object}
,则加载 angular。
如果您收到消息Uncaught ReferenceError: angular is not defined
,则不会加载角度。
您可以通过测试JavaScriptangular
对象是否为undefined
.
然后,您应该回退到使用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">
if(window.angular === undefined) {
....
}
For angular 2 and newer try
window.ng
in a console
或者这样做:
<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>
您可以尝试这样的事情,当角度应用程序完成加载时,这将返回 false。
window.getAllAngularTestabilities()[0]._ngZone.hasPendingMacrotasks
对于角度 11,您可以使用:
if(document.getElementsByTagName('app-root')[0].attributes['ng-version'] === undefined){
...
}
在开始知道代码是否已加载之前,我使用了这个简单的代码
<body ng-app="">
{{3 + 3}}
</body>
如果这导致 6 则意味着您的角度已加载,否则未加载。