包含其他javascript文件时的Highcharts javascript错误

时间:2015-12-11 18:57:54

标签: javascript jquery highcharts

我正在使用SB admin 2模板在laravel框架中重建我的网站。该模板包含一个名为frontend.js的文件,该文件用于菜单等。该文件可在此处查看:https://github.com/start-laravel/sb-admin-laravel-5/blob/master/public/assets/scripts/frontend.js

在我的旧网站中,我使用了一些Highcharts,我也希望在新版本中使用它们。在旧网站中,我使用了这样的脚本:https://jsfiddle.net/do0gm917/

在标题中我有:

<script src="//code.jquery.com/jquery-1.9.1.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/highcharts-more.js"></script>

当我尝试在新网站中执行相同操作时,我收到此错误:未捕获TypeError:$(...)。highcharts不是函数

我注意到当我删除frontend.js时,highcharts工作正常,所以问题不在于高图代码本身,但显然这两个脚本不喜欢一起工作。

我的Javascript知识非常有限,而且由于frontend.js文件是15324,我不知道如何调试这个问题。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

事实jQuery.fn.jquery打印版本是一件好事,因为这意味着jQuery对象没有被其他库覆盖。

由于你正在使用1.9.1并且你获得2.1.3这意味着你有2个jQuery版本加载和1.9.1 jQuery对象(其中包含highcharts函数)被2.1.3对象覆盖而这反过来也删除了highcharts功能。您可以尝试停止加载第二个版本,或者如果您不能这样做,那么尝试使用jQuery noconflict模式,它允许两个版本共存。你可以使用noconflict,如下所示。

编辑*

<script src="//code.jquery.com/jquery-1.9.1.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/highcharts-more.js"></script>
<script>
    var jQuery191 = jQuery.noConflict( true );
</script>

由于jQuery191在加载jQuery-1.9.1后刚刚保存,因此它将引用该版本。现在,即使2.1.3覆盖了jQuery对象,它也不会覆盖jQuery191对象,因此它仍可用于渲染高级图表。

jQuery191.highcharts(...)