2013-07-26 54 views
0

我們有被加載到通過谷歌雙擊網站動態adbanner。使用JavaScript來創建jQuery的鏈接

我們使用一些jQuery的代碼,從而部分的設置,我們檢查,如果一個網站正在運行jQuery的,如果沒有,我們使用Javascript功能來添加一個鏈接到我們的jQuery文件。

這是做得很好,但我仍然收到一個錯誤「未捕獲的ReferenceError:jQuery未定義」我假設這是由於訂單的事情加載,但我不知道如何解決問題。一切正常,如果你刷新頁面的問題似乎只發生在第一次加載。

另外,如果我打開一個新的瀏覽器窗口,並加載頁面第二次一切工作正常。

下面是我們使用的腳本標記添加到頭部代碼:

if(!window.jQuery) 
{ 

    var fm_j = document.createElement('script'); fm_j.type = 'text/javascript'; 
    fm_j.src = 'js/jquery-1.8.3.min.js'; 
    document.getElementsByTagName('head')[0].appendChild(fm_j); 
} 
+0

要補充的CDN? –

+3

_「我們檢查一個網站是否正在運行Jquery,如果沒有,我們使用Javascript來添加一個鏈接到我們的Jquery文件」_ - 這是明智的嗎?如果頁面確實已經擁有jQuery,那麼您不會添加自己的版本,但是已經包含的版本太舊或者新版本與您的代碼兼容? – nnnnnn

+1

使用typeof,'if(typeof(jQuery)===「undefined」)' –

回答

6

這是一個時機的問題。當您像這樣動態加載腳本時,它們將異步加載,並且不會阻止頁面上的JavaScript的進一步執行。這意味着jQuery可能不會在您的jQuery特定代碼運行時加載。

當你刷新,js/jquery-1.8.3.min.js可能已經緩存,因此將加載速度更快,所以你看不到的錯誤。

的解決方法是換你的JavaScript成一次的jQuery已經使用load事件處理程序加載調用的函數。這裏是我從this tutorial改編的一個例子。

working example。另外,正如幾位評論家指出的,許多網站在iframe中放置橫幅廣告,以防止廣告「污染」您的網頁與他們的圖書館。