2015-06-19 127 views
0

我正在爲Shopify構建應用程序 - 目的是插入腳本標記。我需要編寫插入代碼的幫助。插入自執行腳本JavaScript/Shopify

我是following this advice來檢查jQuery是否已經加載,然後在中間加載我的代碼。但是,它似乎並沒有工作。下面是具體的代碼:

(function(){ 

    var loadScript = function(url, callback){ 

    var script = document.createElement("script") 
    script.type = "text/javascript"; 

    if (script.readyState){ //IE 
     script.onreadystatechange = function(){ 
     if (script.readyState == "loaded" || 
      script.readyState == "complete"){ 
      script.onreadystatechange = null; 
     callback(); 
     } 
    }; 
    } else { //Others 
     script.onload = function(){ 
     callback(); 
     }; 
    } 

    script.src = url; 
    document.getElementsByTagName("head")[0].appendChild(script); 
    }; 

    // my actual jQuery code 

    var myAppJavaScript = function($){ 
    var convert = $('.click-2-tweet-shopify'); 
    $.each(convert, function(index, item){ 
     var content = $(item).text().compact(); 
     $(item) 
     .addClass('ui segment') 
     .append('<a target=_blank class="pointer float-right"><i class="twitter icon"></i>Click2Tweet</a>') 
     .children('a') 
     .attr('href', "http://twitter.com/share?" + $.param({ text: content })); 
    }); 

    // twitter code snippet 

    !function (d, s, id) { 
     var js, fjs = d.getElementsByTagName(s)[0]; 
     if (!d.getElementById(id)) { 
     js = d.createElement(s); 
     js.id = id; 
     js.src = "https://platform.twitter.com/widgets.js"; 
     fjs.parentNode.insertBefore(js, fjs); 
     } 
    }(document, "script", "twitter-wjs"); 
    }; 

    if ((typeof jQuery === 'undefined') || (parseFloat(jQuery.fn.jquery) < 1.7)) { 
    loadScript('//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js', function(){ 
     jQuery191 = jQuery.noConflict(true); 
     myAppJavaScript(jQuery191); 
    }); 
    } else { 
    myAppJavaScript(jQuery); 
    } 

}); 

請想象一下這個腳本的目的是要獨立的。如果有人將這個添加到任何頁面,它應該按原樣工作(因爲它最初加載jQuery)。我應該如何調整代碼以按預期工作?

+0

什麼工作不忘記第二I? jQuery沒有被加載? – lshettyl

+0

我沒有收到任何控制檯錯誤,但代碼本身$(item).addClass('ui segment')沒有添加任何類。 – ilrein

+0

但是'var convert'作爲一個jQuery對象正像'$ .each'一樣工作? –

回答

1

有時我們總會忘記小事情!你在你的IIFE :)

(function(){ 
    //..... 
    //All your code 
    //..... 
}()); //() --> this :) 

-Updated fiddle-