2016-01-09 82 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'])' –

相關問題