我想加載我寫的插件中的datatables JavaScript庫。問題是我在加載外部資源時遇到衝突,因爲當我調用require時,datatables與某些內容衝突。加載外部腳本與requirejs無需訪問配置
<!-- DataTables -->
<script type="text/javascript" charset="utf8" src="//cdnjs.cloudflare.com/ajax/libs/datatables/1.9.4/jquery.dataTables.min.js"></script>
...
<script type="text/javascript">
require(['forum/admin/footer']); <-- crashes here, line 281
</script>
這裏的錯誤消息:
Uncaught Error: Mismatched anonymous define() module: function (h){var j=function(e){function o(a,b){var c=j.defaults.columns,d=a.aoColumns.length,c=h.extend({},j.models.oColumn,c,{sSortingClass:a.oClasses.sSortable,sSortingClassJUI:a.oClasses.sSor...<omitted>...ch require.js:8
B require.js:8
M require.js:15
d require.js:26
requirejs require.js:31
(anonymous function) (index):281
由於這是一個插件,我有限制,我試圖解決,如不能夠在調用require.config()開始爲資源指定路徑。我看到有人使用define
這樣的電話,如 define('resource', ['http://cdn.ajax.blah']);
in this blog 但它看起來不像它可以這樣使用,因爲每個其他例子都有一個函數作爲第二個參數。
我可以在require調用中打開函數參數的內部,並加載所有腳本(jquery.js,jquery-ui.js,code.jquery.com/jquery-1.7.2.min.js,jquery.min .js,jquery.datatables.js)但現在我仍然遇到問題,其中dataTable()不是來自jquery對象的可調用函數。 – BrDaHa
jQuery是否不止一次加載?你提到的這種設置就是這種情況發生的風險很高。例如,如果主代碼加載jQuery並使其可以作爲「jquery」模塊訪問,並且您的插件*也加載jQuery但從CDN加載它,那麼DataTables插件將自行安裝在主要加載的jQuery模塊上代碼,而不是插件加載的代碼。 – Louis
我會深入瞭解爲什麼這些都是加載。我實際上更多地使用了它,並且讓它起作用,但是你能否告訴我爲什麼這會起作用:http://jsfiddle.net/zMqZ3/7/而這個不是:http:// jsfiddle。 net/zMqZ3/5/ – BrDaHa