0

我正在使用Rails 3.2.6并尝试集成Rails S3 Fancy 上传器,我认为这可能是对我如何同时使用原型、jquery 和 mootools 的误解,或者只是将其迁移到更新版本的 rails .

在包含资产管道后,我立即将 jQuery 置于无冲突模式(prototype.js 和 mootools.js 库位于 /assets/javascript 文件夹中,以及类似于 /public 文件夹的“fancyuploader”的所有源文件面向 github repo)

<%= javascript_include_tag "application" %>
<script type="text/JavaScript>
jQuery.noConflict();
</script>

但是,我仍然收到很多未定义的错误,我认为这与资产加载到页面上的顺序有关。

Uncaught TypeError: Object [object Window] has no method 'addEvent' script.js:10
Uncaught TypeError: Object [object Window] has no method 'addEvent' script.js:10
Uncaught ReferenceError: Class is not defined FancyUpload2.js:15
Uncaught ReferenceError: Class is not defined FancyUpload3.Attach.js:15
Uncaught ReferenceError: Class is not defined FancyUpload3.S3Uploader.js:27
Uncaught ReferenceError: Fx is not defined Fx.ProgressBar.js:13
Uncaught ReferenceError: Swiff is not defined Swiff.Uploader.js:14
Uncaught ReferenceError: Class is not defined Uploader.js:13
Uncaught TypeError: Cannot read property '0' of undefined prototype.js:6719

看起来 mootools 和原型不适用于创建“FancyUploader”所需的脚本


该项目在Rails 3.0.7中运行良好,资源位于公共文件夹中,haml模板引擎位于源代码中(我使用的是 erb,但我认为这是一个 JS 问题),但是,我也注意到原型没有t 似乎在作者中被引用包括??

= javascript_include_tag( 'mootools.js', 
                              'fancyupload/source/Fx.ProgressBar',
                              'fancyupload/source/Swiff.Uploader', 
                              'fancyupload/source/FancyUpload3.Attach', 
                              'fancyupload/source/FancyUpload3.S3Uploader' ) 
4

2 回答 2

3

好。你这里有问题,你的堆栈不兼容。

  • jQuery + 原型 = 好的
  • mootools + jquery = 好的
  • mootools + 原型 = 失败

原因很简单 - 两者都是原型,虽然您可以命名 the$并确保效果很好,但您不能命名 Types 原型,而且 MooTools 和 Prototypejs 都不会尝试隐藏/命名它们的全局对象导出,所以会有不可避免的冲突。

是时候重新考虑你使用的东西了,有 2 个框架是不受欢迎的,有 3 个是矫枉过正的。

于 2012-07-11T12:04:49.080 回答
0

为什么你不尝试 http://mootools.net/forge/p/mooupload

支持新的HTML5块上传、flash上​​传和普通html4上传。它有一个漂亮的进度条,允许您同时上传多个文件(加上 HTML5 和 Flash 上传方法的多个文件选择)。

Mooupload 使用“document.id”而不是 $,所以它应该与 JQuery 一起使用。

于 2013-10-27T19:44:36.650 回答