我在 Ruby on Rails 中遇到了一个奇怪的错误。我正在尝试实现Uploadify JQuery 库以使用 flash 对象处理多个上传。我正在使用 Ajax 加载的选项卡上实现此功能。以前,我将我的 Uploadify js 文件的 javascript_include_tag 放在与 Uploadify 影响的相关 HTML 相同的 ajax 页面上。然而,这产生了一些非常奇怪的结果。有时在该页面上对我的 Uploadify 函数的调用会起作用,而有时它会完全失败。如果在这种情况下,通过在选项卡之间切换并第二次或第三次检索 Ajax 页面无法正常工作,它通常可以解决问题。奇怪的是,如果我使用 Firebug 检查 HTML,即使 Javascript 功能正常工作,也看不到 javascript 链接,尽管我确实看到了对该文件的网络请求。我尝试将用于 uploadify 的 javascript_include_tag 移动到我的应用程序布局中的 head 标签,但随后 Uploadify flatout 完全停止工作。
当我将 Ajax 页面上带有链接标签的 uploadify 功能推送到我的生产服务器时,问题仍然存在,但频率降低了很多。事实上,我只注意到它几次。此外,此功能不再适用于任何其他浏览器时期,只是 Firefox,但这可能是一个完全不同的问题,我会弄清楚(即使 Javascript 应该是独立于浏览器的......)。
当我尝试在其中包含 uploadify 调用时,我的 head 标签如下所示:
%head
%title Virtual Robot Games
= stylesheet_link_tag 'style.css','web_app_theme.css', 'events.css', :media => 'screen'
= csrf_meta_tag
= javascript_include_tag 'jquery'
= javascript_include_tag 'prototype'
= javascript_include_tag 'noconflict.js'
= javascript_include_tag 'effects.js'
= javascript_include_tag 'calendar_date_select'
= javascript_include_tag 'highlight'
= javascript_include_tag 'textcounter'
= javascript_include_tag 'scriptaculous.js'
= javascript_include_tag 'collapsible.js'
= javascript_include_tag 'bbhelp.js'
= javascript_include_tag 'swfobject'
= javascript_include_tag 'application'
= javascript_include_tag 'uploadify'
额外信息:
我同时使用 Prototype 和 JQuery,它们经常相互冲突,但我通常能够解决这个问题。我从来没有遇到过两个库发生冲突的情况,而且我的 JQuery 有时只能工作。通常,如果发生冲突,它完全不会起作用。
编辑 实际上我想我找到了问题,我正在使用jquery-rails gem,我忘记在我的 Uploadify js 文件中包含 JQuery 库。相反,我有一个指向 googleapi 的内联链接。用包含调用替换 google api 链接解决了问题。尽管我最初的问题是存在的,但我的 JavaScript 链接是否应该全部存储在我的 head 标签中?