2011-05-21 41 views
2

首先,我是JavaScript新手,所以這個問題可能很愚蠢。 我有一個要求,我會提供一個JS腳本到其他網站包括在他們的網頁。在第三方js代碼中使用jquery

現在我的問題是我應該使用jQuery或純javascript.Will /可以jQuery影響網站的其餘功能。 加上我會用普通的javascript使用jquery的好處是什麼。

我的要求是獲取網站的所有圖像,並對這些網站上的圖像進行一些處理。

在此先感謝。

回答

2

我會說,如果處理不涉及jQuery,那就不要使用它。

您需要處理以下問題,如果你有它

  • 未能加載(網絡原因
  • 與其他版本衝突本地加載
  • 與本地加載其他庫衝突

所有問題都有解決方法/解決方案,但您必須實現每個人的每一個。

如果你只需要找到頁面中的所有圖像,那麼你可以使用.getElementsByTagName()方法

var imagelist = document.getElementsByTagName('img'); 

,只是做了處理..

您可能需要的課程附加你的代碼在load事件,以確保無論你的代碼做的DOM是準備接受它..

現代瀏覽器,這將是.addEventListener(),而IE瀏覽器將是.attchEvent()

你的腳本可能是這樣的

(function(){ // wrap in a self-invoking function to avoid global name-space pollution 

    // attach to the load event so out code runs once the page has loaded 
    if (window.addEventListener) { // modern 
    window.addEventListener('load', imageProcessor, false); 
    } 
    else if (window.attachEvent) { // IE 
    window.attachEvent('onload', imageProcessor); 
    } 

    function imageProcessor(){ 
    // get all images 
    var imagelist = document.getElementsByTagName('img'); 

    // loop the list of images to do something with each image 
    for (var img = 0; img < imagelist.length; img++) 
    { 
     var currentImage = imagelist[img]; 
     // do processing on the currentImage which hold a reference to the image 
    } 
    } 

})(); // do the self-invoking 

演示http://jsfiddle.net/gaby/nXPzk/

+0

它的工作..這正是我正在尋找的..因爲我會提供的代碼給其他客戶使用他們的網頁。我擔心兼容性問題。 – shashuec 2011-05-21 07:14:57

+0

我主要是後端工程師,很少或沒有JS知識。但作爲項目的一部分,我將不得不自己處理這部分.. – shashuec 2011-05-21 07:17:33

+0

@Shashwat,我們都在那裏..建議的代碼是相當不可靠的的衝突,所以它是一個好的開始..你只需要修改'imageProcessor'方法來滿足你的需求。 – 2011-05-21 07:19:35

0

JQuery比普通的javascript更方便。您不必擔心跨瀏覽器兼容性問題(例如IE與Firefox與Chrome)。我會推薦通過javascript,除非你想自己處理:)

你可以加載Jquery庫,但這可能比你要找的東西稍重。此外,您需要從服務器獲取庫,這會增加另一個失敗點(但是,如果您將其託管在自己的服務器上,那麼您將擁有更多的控制權)。

TLDR:JQuery很方便。如果你有權訪問它,那麼你應該使用它。

1

這將是更容易實現與jQuery,主要是因爲你希望能夠到你的腳本分發到任何瀏覽器(和jQuery是一個跨瀏覽器庫),但它確實有它的缺點。
如果這是你自己的項目,自己的網頁,你確切地知道什麼時候加載/執行,但如果你給你的腳本給其他人,你必須思考的3個問題至少包括:

  1. 不同的庫衝突
    這可以使用jQuery的noConflict方法來解決,但我已經看到了它在某些情況下
  2. 相同的庫衝突
    說,用戶已經加載的jQuery的版本X失敗。你也要求他加載Y版本,除了這個效率非常低,這可能會導致不同的jQuery版本之間的衝突。
    對此有一些解決方法(檢查jQuery是否存在,如果不存在,則會異步加載),但代碼稍微複雜一些。
  3. 代碼大小
    當我覺得第三方一段代碼,我想...嗯幾KB加載到能夠運行的功能,但如果你想使用jQuery,你可能會迫使使用腳本的用戶僅爲您的一個功能加載整個庫而不是1-2 kb(如果用戶的連接速度很慢,則需要說明其含義)

既有記得起起落落,這實際上取決於你在做什麼,所以,如Gaby aka G. Petrioli所說,「如果處理不涉及jQuery,那就不要使用它」。