作者LaPass (LaPass)
看板Ajax
標題[問題] 防止javascript互相衝突
時間Mon Sep 24 12:10:56 2012
如標題
自己在 javascript方面算新手
因為沒用JS寫出大東西過
現在打算寫個類似google analytics之類的
可以讓別的網站只加上幾行我給他的JS就,可以使用的小功能
在實做方面,我會考慮用jQuery之類的libary,因為比較省工
但是,現在我在擔心一個問題
別人的網站可能也有使用jQuery,甚至是不同版本
我想請問
如何同時「避免自己的js、引用的libary別人網上的js互相衝」
又能夠「讓自己的js、引用的libary,可以在別人的網站上,正常運作」?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.59.16.65
1F:推 musie:全部都寫在同一個nameSpace下面 或是寫成jquery plungin 09/24 12:39
2F:→ LaPass:請問是像這樣嗎? 09/24 12:56
4F:→ LaPass:成plungin的原因是,我無法確定別人用的版本,以及是否有裝 09/24 12:58
5F:→ LaPass:jquery? 09/24 12:58
6F:→ LaPass:是下面 172的那個嗎? 那個我看不太懂 QQ 09/24 12:59
8F:→ musie:下面有介紹jquery plungin的pattern.. 09/24 13:55
9F:→ musie:再下面也有namespace的解說.. 09/24 13:56
10F:→ musie:關於jQuery版本數不同這就沒辦法了 只能事先宣告適用於幾版 09/24 13:57
11F:→ LaPass:沒有「把自己引用的jQuery關在自己的框框中自己玩」的方法 09/24 14:01
12F:→ LaPass:嗎? Q_Q 09/24 14:01
13F:→ fatalismo:requirejs load指定的jquery(cdn), 再jQuery.noConflict 09/24 18:03
14F:→ AstralBrain:塞iframe吧 09/24 18:04
15F:→ fatalismo:再用r.js打包,並且在對方的jquery載入前載入你的檔案 09/24 18:05
16F:→ TonyQ:不會沒辦法啊,不要用 $ 這個變數就好了。 09/24 19:10
17F:→ TonyQ:也不要用 jQuery 這個變數,修改一下 jQuery source 就好 09/24 19:10
18F:→ LaPass:好主意,我晚點試試看 XDDD 09/24 19:41
19F:推 mrbigmouth:把jquery原始碼複製貼上到自己的原始碼內... 09/24 19:44
20F:→ mrbigmouth:應該說自己的scope裡 然後把前面幾行的 09/24 19:45
21F:→ mrbigmouth:_jQuery = window.jQuery _$ = window.$等等改掉 09/24 19:45
22F:→ mrbigmouth:等等 不用這樣 09/24 19:45
23F:→ mrbigmouth:直接把最後一行的})( window );改成你的app即可 09/24 19:46
24F:→ mrbigmouth:反正就是別讓jQuery直接把$,jQuery註冊在window上即可 09/24 19:46
25F:→ mrbigmouth:然後就能在自己的scope內玩了 09/24 19:46
26F:→ musie:等於把jQuery的core包在你的lib裡面 這樣肥滋滋... 09/24 21:41
27F:→ LaPass:成功.... 搜尋取代window.$跟window.jQuery後就成功了。 09/24 22:07
28F:→ LaPass:接下來我看看要怎麼把jQuery UI包進去.... XD 09/24 22:07
29F:推 mrbigmouth:原Po的意思就是可以使用者用一套jQuery,自己另用一套 09/25 12:46
30F:→ mrbigmouth:那就不可能不肥滋滋啊...XD 09/25 12:46
31F:→ LaPass:也還好,才幾十k而已,jQuery UI就很肥..... 200K.....orz 09/25 12:50
32F:→ nenpow:jquery ui 可以選擇要的下載 一般不會想全下載吧 09/26 08:56