我有一個JavaScript文件,用戶可以在其網站上嵌入。它使用coffeescript和Rails資產管道將一堆文件編譯成一個文件。封裝JavaScript的嵌入式部件
# The following dependencies will be compiled into test.js (rails asset pipeline manifest file)
#
#= require jquery
#= require jquery.cookie
jQuery ->
$.cookie('foo', 'bar')
console.log $.cookie('foo')
可正常工作與樣本頁:
<!DOCTYPE html>
<head></head>
<body>
<script src="http://localhost:3000/assets/test.js" type="text/javascript"></script>
</body>
</html>
但是這個腳本是一個小部件,所以應該在任何網站上嵌入。如果用戶添加其下自己的jQuery,那麼事情打破:
<!DOCTYPE html>
<head></head>
<body>
<script src="http://localhost:3000/assets/test.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</body>
</html>
這給了錯誤Uncaught TypeError: Object function (a,b){return new e.fn.init(a,b,h)} has no method 'cookie'
是什麼使包含自我包裹在test.js一切的最好方式?我認爲coffeescript將所有內容封裝在一個匿名函數中可能會有所幫助,但我猜不。
謝謝!