Re: [問題] 防止javascript互相衝突

看板Ajax作者 (杉斑加紋)時間13年前 (2012/09/24 22:59), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《LaPass (LaPass)》之銘言: : 如標題 : 自己在 javascript方面算新手 : 因為沒用JS寫出大東西過 : 現在打算寫個類似google analytics之類的 : 可以讓別的網站只加上幾行我給他的JS就,可以使用的小功能 : 在實做方面,我會考慮用jQuery之類的libary,因為比較省工 : 但是,現在我在擔心一個問題 : 別人的網站可能也有使用jQuery,甚至是不同版本 : 我想請問 : 如何同時「避免自己的js、引用的libary別人網上的js互相衝」 : 又能夠「讓自己的js、引用的libary,可以在別人的網站上,正常運作」? 因為無法得知使用者使用 bookmarklet的網站有沒有或是版本對不對, 所以我寫過一個用來載入jquery的 bookmarklet google 一下 jquery version Conflict 也有一些討論, 大致上就是利用jQuery.noConflict(true); jquery載入時會先把原有的 $, jQuery, 存為 _$, _jQuery, noConflict() 會恢復 $, noConflict(true) 則二個都恢復, 例如, 原本版本為 1.6.4, 載入 jquery 1.7.2, 再載入自己的程式, 而自己的程式的寫法和plugin差不多, ( function($) { var jQuery = $; /*利用 closure, 裡面的是1.7.2 */ } )(jQuery); 最後noConflict(true), 再恢復 真的要寫plugins這招就沒用了, 因為plugin掛在裡面的$, 外面的不能用, 至於內外同時用jquery會不會有奇怪的衝突, 沒有大量測試, 我也不確定. 要寫給人家用的程式, 不用太擔心這個, 只要避開明顯的衝突, 其他的說明清楚如何使用, 點出可能的問題, 再給出可能的解決方法就好, 最後不能用, 那再考慮修改原始碼 為了各種難以預料的事寫一堆程式來解決, 不如明確定義出使用環境, 讓使用者去處理衝突, 程式設計師的通病, 想用程式解決一切問題, 即使明明有更適當的做法 XD 何況程式的設計規畫都還沒個影就想太遠, 也太過度了, 最後可能會發現, 其實也不用考慮這些, 可能的原因之一是很少人在這些情況下使用你的程式, 真有必要, 那就修改原始碼, 反正程式設計師很愛寫程式 -_- http://jsfiddle.net/kFVdG/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.126.214 ※ 編輯: ChowMein 來自: 112.104.126.214 (09/24 23:03)
文章代碼(AID): #1GO7KxcG (Ajax)
文章代碼(AID): #1GO7KxcG (Ajax)