【问题标题】:Jquery, prototype, mootools and rails 3 fancy uploaderJquery、prototype、mootools 和 rails 3 花式上传器
【发布时间】:2012-07-10 17:11:07
【问题描述】:

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

在包含资产管道 (prototype.js 和 mootools.js 库位于 /assets/javascript 文件夹中,以及“fancyuploader”的所有源文件类似关于 /public 文件夹在 github 存储库中的定位方式)

<%= 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 中运行良好,资源位于 public 文件夹 中,haml 模板引擎位于源代码中(我正在使用 erb,但我认为这是一个 JS 问题),但是,我也注意到 prototype 在作者包括中似乎没有被引用

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

【问题讨论】:

    标签: jquery ruby-on-rails prototypejs mootools fancyupload


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      • jquery + 原型 = ok
      • mootools + jquery = ok
      • mootools + 原型 = 失败

      原因很简单 - 两者都是原型,虽然你可以命名 $ 并确保它运行良好,但你不能命名 Types 原型,而且 MooTools 和 Prototypejs 都不会尝试隐藏/命名它们的全局对象导出那样,难免会发生冲突。

      是时候重新考虑使用什么了,拥有 2 个框架是不受欢迎的,拥有 3 个框架是多余的。

      【讨论】:

      • 啊,我明白了,所以原作者可能根本没有使用prototype!因此,我没有看到它被引用的原因。我想我需要更多地研究为什么Class 原型没有从库中实例化或崩溃。我想我会坚持使用 mootools,因为它看起来是原始脚本使用的。
      • 嗯,最初的幻想上传是由 Harald (digitarald) 以前在 mootools-core 团队工作的,所以是的,没有 jquery,没有原型 :)
      猜你喜欢
      • 1970-01-01
      • 2011-04-26
      • 2012-10-29
      • 2011-04-28
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      • 2010-10-19
      • 2011-07-20
      相关资源
      最近更新 更多