作者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