2016-01-09 54 views
0

我试图在组件中动态加载js脚本。检查组件Angular 2中是否已有外部js脚本

我有一个使用验证码,这个问题与它的是每次用户访问该组件,外部脚本加载联络组件。

export class ContactCmp { 

captchaReady = false; 
constructor() { 
} 
ngOnInit() { 
    if(){  //check if script is already loaded 
     this.loadScript('https://www.google.com/recaptcha/api.js', this.captchaLoaded); 
    } 
    else{ 
     console.log("captcha is already loaded.") 
    } 
} 
captchaLoaded(){ 
    console.log("Captcha loaded"); 
    this.captchaReady = true; 
} 

loadScript(url, callback) 
{ 
    var head = document.getElementsByTagName('head')[0]; 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = url; 

    script.onreadystatechange = callback; 
    script.onload = callback; 

    head.appendChild(script); 
} 

} 

如何检查脚本是否已经加载?

+0

的存在,如果它的缓存,这一点我敢肯定,谷歌将确保它是,那么它应该立即加载... – dandavis

+0

@ dandavis它没有加载正确的方式 –

回答

1

使用

document.querySelector('script[src="https://www.google.com/recaptcha/api.js"]'); 

以测试脚本标签已经存在

或检查的window.__google_recaptcha_client

+0

谢谢这就是我所需要的'if(!window ['__ google_recaptcha_client'])' –

相关问题