有效的jQuery脚本未在生产模式下加载

时间:2012-02-13 00:04:55

标签: jquery ruby-on-rails production-environment

在生产模式下我的网站遇到了一些麻烦。从jQuery脚本中获取一些错误,因此无法加载。以为jQuery.noConflict();可以解决它,但它让我失望!现在尝试了很多东西,所以我愿意接受任何有关解决方案或调试的建议。

继承我的错误:

Uncaught controls.js requires including script.aculo.us' effects.js library
/#about:30Uncaught TypeError: Object [object Object] has no method 'cycle'
/#about:12Uncaught TypeError: Object [object Object] has no method 'cycle'

解决它的人获得金星!谢谢;(

2 个答案:

答案 0 :(得分:2)

在解决后续错误之前,您需要修复第一个错误(因为它们可能来自级联故障)。根据你未被捕获的异常,你有一个名为“controls.js”的脚本,它需要在页面上加载script.aculo.us库才能工作。从这里下载库Script.aculo.us将它放入你的web目录,并在controls.js加载之前包含它:

<script type="text/javascript" src="/location/to/scriptaculous.js"></script>

答案 1 :(得分:0)

金星?好 我遇到了类似的问题。你的问题不是jQuery.noConflict();它既不是原型js,也不是你没有将所有内容添加到noconflict

1 - 所有人的拳头都与其他不使用jquery ex:

的librairie对齐
<script src="js/scriptaculous/lib/prototype.js" type="text/javascript"></script>

<script src="js/scriptaculous/src/scriptaculous.js" type="text/javascript"></script>

 <script language="javascript" src="js/protoplasm/protoplasm.js"></script>

 <script>
        Protoplasm.use('rte').transform('textarea.richeditor');
</script>

2 - 之后插入你的jquery文件,并在使用jquery的任何其他库或代码之前直接跟随noconflict

<script type="text/javascript"  src="js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript">

    $.noConflict();

    </script>

3 - 而且最重要的是,这是你忽视这一点的地方 打开你所拥有的每个javascript代码作为使用jquery的js,如Bootstrap.min.js或app.js,如果你发现里面有jquery,那么在文件的最开头放置代码的顶部(例如开始使用bootstrap.min.js)以下代码

jQuery( document ).ready(function( $ ) {
// Code that uses jQuery's $ can follow here.


///////////////////////////////////////////////////////////////////////////////

4-在代码的最后(在bootstrap.min.js的末尾)放入以下代码

///////////////////////////////////////////////////////////////////////////////

});

5 - 在页面之间使用jquery将所有其他代码放在另一个

之间
 jQuery( document ).ready(function( $ ) {
    // Code that uses jQuery's $ can follow here.


    ///////////////////////////////////////////////////////////////////////////////


 ///////////////////////////////////////////////////////////////////////////////

    });

正如你所看到的那样仅靠jquery noconflict是不够的。如果你不想要任何干扰,你真的必须在任何地方添加那些代码甚至在外部文件中使用jquery

您可能会在带有firebug的controls.js中遇到一些错误,但您的所有代码都可以正常工作。即使你删除control.js,只要scriptaculous.js在你的页面上,Firebug总会给你和类似TypeError的错误:this.element是null controls.js,但你的所有代码都将完美运行。

请不要忘记金星。感谢