簡體   English   中英

包括外部<script> and prevent loading jQuery multiple times

[英]Include external <script> and prevent loading jQuery multiple times

我必須將來自外部站點的腳本包含到我的站點中。

<script src='http://widgets.something.de/clientidblablabla?parameters=2324' type='text/javascript'></script>

太糟糕了,這些腳本還包含了jQuery 1.4.1。 到目前為止,當我使用jQuery 1.8.3時,我的某些腳本已損壞。

有沒有辦法防止加載外部jQuery文件? 例如,我可以使用URL http://widgets.something.de/resources/jquery-1.4.1.js並阻止它?

盡管此腳本相當龐大,但僅在台式計算機上需要。 我如何將這個<script src="">標記實現到if($(window).width() > 768px) { // fire script };

我認為您可以簡單地使用另一個別名來加載您的jquery,並讓插件使用通用別名$

通常是加載所有插件並在需要時使用它們。 所以if($(window).width() > 768) { // fire script }聽起來不錯。 另一種方法是使用jQuery getScript()方法,該方法允許您異步加載腳本:

(function(j){

    if( $(window).width() > 768 ){
        j.getScript('http://widgets.something.de/clientidblablabla?parameters=2324', function(){
            // script loaded, you can play with it from here
        });
    }
})(jQuery);

編輯:

我舉了一個例子( jsFiddle )來更好地解釋它。

(function(j213){

    // right now j213 and $ are aliases of the same version (2.1.3)
    j213('body').append( 'j213 = ' + j213().jquery + '<br/>' );
    $('body').append( '$ = ' + $().jquery + '<br/>' );

    j213.getScript('https://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js', function(){

        // once another version of jQuery has been loaded, $ becomes an alias for 1.4.1 while j213 still holds for 2.1.3
        $('body').append( '$ = ' + $().jquery + '<br />' );    

        // you can also remove an alias
        delete $; // or $ = undefined; 
                  // or $ = null;
                  // or $ = 'whatever you want';

        j213('body').append(typeof($) + '<br />'); // returns undefined

        // or assign a new one easily
        $ = jQuery; // $ is now 1.4.1 - the last jQuery loaded
        $('body').append( '$ = ' + $().jquery + '<br />' );

        $ = j213; // $ is now 2.1.3
        $('body').append( '$ = ' + j213().jquery + '<br />' );

    });


})(jQuery);

如果jQuery 1.4.1與要加載的小部件在同一文件中,則看不到沒有加載它的方法。 但是,您可以通過首先加載該小部件,然后“刪除” $jQuery變量( delete $; delete jQuery; ), 然后加載jQuery 1.8.3來擺脫瀏覽器中的jQuery 1.4.1。

您可以有條件地使用document.write加載文件,也可以通過XHR-Request加載文件並將其傳遞給eval()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM