Re: [ js ] .js include js檔

看板Ajax作者 (飄)時間17年前 (2008/07/18 02:59), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串4/7 (看更多)
※ 引述《wctang (wctang)》之銘言: : ※ 引述《hyderai (飄)》之銘言: : : 最近剛開始接觸javascript : : 我知道javascript裡面沒有include這種東西 : : 所以要自行撰寫函式來使用 : : 網路上目前找到的,大致如下: : : function load(path) { : : var d = document.createElement(script); : : d.src = path; : : document.getElementsByTagName(body)[0].appendChild(d); : : } : : 不過這種方式達不到我的目標 : : 最近在網路上看到一支js應用程式(ex. a.js)是另外使用jQuery framework來撰寫 : : 它是直接將jquery-1.2.6.js跟一些plugin的內容全部複製到該js檔內 : : 只是我覺得這樣看起來很亂,想用類似include的方式,將它們獨立出來,先使用 : : 上面的function將jquery-1.2.6.js include進來後,再開始程式的撰寫。 : : 不過要是用上面的function會失敗,出現jQuery未定義的訊息。 : : 是因為變數scope的問題,還是其他原因?有解決方式嗎? : : js檔include其他js檔、css檔是不是不常見, : : 因為沒有include,所以code reuse只能用複製的方式嗎? : function loadscript(jspath,loaded) { : var s=document.createElement('script'); : s.setAttribute('type','text/javascript'); : s.setAttribute('src',jspath); : if(loaded){ : if(s.addEventListener){ : s.addEventListener('load',loaded,false); : }else if(document.all){ : s.onreadystatechange=function(){if(this.readyState==='loaded'){loaded();}} : } : } : document.getElementsByTagName('head')[0].appendChild(s); : } : loadscript('http://jquery/addrss.js',function(){ : alert($); : }); 就目前找到的方法1.使用addEventListener的方式在載入多個js檔方面 ,好像不太方便,不過在loadscript()第二個引數函式中可以馬上 使用jQuery,這裡不需要另外設timer去考慮jQuery-1.2.6.js是否載入 完成的問題(?) 方法2.是使用ajax去抓想要load的多個js檔,相對的必須在同一網域 才能使用,最後再使用window.eval()去執行抓回來的js就OK了,不過 我測試了一下若是載入多個js檔,好像會有來不及load的情形, 所以就必須去考慮所有的js檔是否已經載入完成,目前看到的無非 是使用setTimeOut 或 setInterval 周期性的去check看是不是所有的 js檔都載入完畢,當然這裡判斷是否載入完成的條件,我想是蠻關鍵的地方... 網路上找到一些心得文,還蠻有幫助的 JavaScriptLoad and Execute JavaScript on Demand author:石頭成 http://blog.roodo.com/rocksaying/archives/2716520.html 這篇是利用XmlHttpRequest即ajax來實作 JavaScriptLoad and Execute JavaScript on Demand, by createElement author:石頭成 http://blog.roodo.com/rocksaying/archives/2741057.html 這篇是利用addEventListener來實作 -- ˍˍ 活出自己 ▕吞佛▏ 才是此生的快意 ▕童子▏  ̄ ̄ by godman362 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.227.140.54

07/18 10:32, , 1F
補充:ff->addEventListener,ie->attachEvent,第二個例
07/18 10:32, 1F

07/18 10:33, , 2F
子是這樣做的喔,請看範例的21,22行
07/18 10:33, 2F
文章代碼(AID): #18VvQSES (Ajax)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 7 篇):
2
10
文章代碼(AID): #18VvQSES (Ajax)