2015-12-11 53 views
0

我正在使用SB admin 2模板在laravel框架中重建我的网站。该模板包含一个名为frontend.js的文件,该文件用于其他菜单。该文件可以在这里看到:https://github.com/start-laravel/sb-admin-laravel-5/blob/master/public/assets/scripts/frontend.js当包含其他JavaScript文件时出现Highcharts javascript错误

在我的旧网站,我用了几个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> 

当我尝试做同样在新的网站,我得到这个错误:遗漏的类型错误:$(...)。highcharts是不是一个函数

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

我的Javascript知识是相当有限的,因为frontend.js文件是15324我不知道如何调试这个问题。有任何想法吗?

+0

很可能你的jQuery对象被你的frontend.js覆盖。尝试在控制台中查看jQuery.fn.jquery或$ .fn.jquery。很可能$对象被覆盖,但你仍然可以使用jQuery来代替$,所以jQuery(“container”)。highcharts()仍然可以工作。 – 11thdimension

+0

当我在控制台中尝试jQuery.fn.jquery或$时,我得到“2.1.3”作为答案。不知道这是不是一件好事(我猜不是,因为我使用的是jquery 1.9.1。)。当我用jQuery替换$时,我得到“Uncaught TypeError:jQuery(...)。highcharts不是一个函数” – ErikL

回答

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对象,因此它仍然可以用来渲染highcharts,如下所示。

jQuery191.highcharts(...) 
+0

感谢您的建议,但是我仍然遇到了一些问题,当我尝试使用您描述的noConflict函数。如果我在jQuery脚本之后包含它,它似乎将jQuery加载到该var中,因为当我在concole中执行“jQuery191.fn.jquery”时,我得到“1.9.1”作为答案。但是,我现在得到错误“Uncaught TypeError:jQuery191(...)。highcharts不是函数”。显然,jQuery191不包含Highchart函数。我一直在谷歌搜索(发现一些熟悉的问题,如在SO问题23369849)。但无法弄清楚如何“告诉”highcharts什么jquery使用... – ErikL

+0

我想我找到了一个解决方案。由于jquery版本已经加载(2.1.3),我认为应该不需要加载另一个版本(highchart应该和2.1.3一样好)。所以我只是删除了包含1.9.1的行,并放置了该行以在行上加载frontend.js来加载highchart。奇迹般的工作:)。我仍然对其他解决方案有所了解,为什么我不能得到无法解决的问题,所以任何评论都可以发挥作用。 – ErikL

+0

我的不好,我粗心,在用highcharts修改后,必须保存noConflict对象,所以它应该直接在高图库下面。我现在已经用正确的配置解开了我的答案。 – 11thdimension

相关问题