0

TL;DR - jQuery 插件在 Firefox 中有效,但在 Chrome 中无效。相同的页面,相同的文件,相同的一切。

所以我有这个树枝页面,它扩展了另一个页面。在父页面中,jquery 像这样通过资产调用

#FooBar/Resources/view/Default/base.html.twig
{% stylesheets output = 'bundles/foobar/*.js' %}
    '@FooBarBundle/Resources/public/js/jquery/jquery-1.8.3.js'
{% endstylesheets %}

{% block custom_js %}{% endblock %}

然后在子模板中我有以下

#WooHooBundle/Resources/views/FrontPage/frontpage.html.twig
{% extends 'FooBarBundle:Default:base.html.twig %}
{% block custom_js %}

    {% javascripts  output='bundles/woohoo/js/*.js'   */ (adding this made output look funny)
        '@WooHoBundle/Resources/public/js/Global/guidedTour.js'
        '@WooHoBundle/Resources/public/js/Global/jquery.joyride-2.1.js'
        '@WooHoBundle/Resources/public/js/Global/jquery.cookie.js'
        '@WooHoBundle/Resources/public/js/Global/jquery.number.min.js'
    %}

        <script src="{{ asset_url }}" type="text/javascript"></script>

    {% endjavascripts %}

{% endblock %}

因此,当我尝试在 Firefox 中使用 jquery.number 时,它看起来像这样(在控制台中)

$.number(1337)
'1337'

在 chrome 中它看起来像这样

$.number(1337)
TypeError: Object function (e,t){return new b.fn.init(e,t,r)} has no method 'number'

我查看了 DOM,插件位于 DOM 中的 jquery 之后。当我查看资源时,插件出现在 jquery 之前。它似乎是按字母顺序排列的,assetic 将这些随机值分配到 assets:install / assets:dump 文件的开头。所以他们看起来像这样

10ec069_jquery.number.min_4.js
c2a2536_jquery-1.8.3_1.js

所以我不知道为什么这会在 firefox 而不是 chrome 中工作......我有其他 JS 在 jquery 插件之后被调用......我已经通过 jsLint 运行它们并且那里一切都很好。

感谢您提供的任何帮助/建议:)

德鲁

编辑:

所以我安装了用于控制台扩展的 Javascript 库,它在其他所有内容之后重新加载 jquery。禁用它,现在一切正常

4

1 回答 1

0

尝试指定文件名而不是 *.js 或目录。

{% javascripts output='javascript.js'
    '@WooHoBundle/Resources/public/js/Global/guidedTour.js'
    '@WooHoBundle/Resources/public/js/Global/jquery.joyride-2.1.js'
    '@WooHoBundle/Resources/public/js/Global/jquery.cookie.js'
    '@WooHoBundle/Resources/public/js/Global/jquery.number.min.js'
%}

在生产中,您的所有 JS 文件都应放入 1 个文件(javascript.js 或其他名称)。在开发中资产应该把它们放在几个文件中。

当你有问题时不要忘记发布你的 symfony 版本。

于 2013-08-03T17:54:03.507 回答