无法调用未定义的方法'on'

时间:2013-03-20 14:13:58

标签: jquery fusioncharts aloha-editor

我正在尝试将FusionCharts和Aloha编辑器集成在同一页面上。由于Aloha依赖于jquery,我认为这是导致某种冲突的原因,但我无法解决它,而且我整天都在苦苦挣扎。 任何帮助,将不胜感激。 谢谢

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title>Getting Started with Aloha Editor</title>
    <link rel="stylesheet" href="index.css" type="text/css">
    <link rel="stylesheet" href="aloha.css" type="text/css">
    <script src="require.js"></script>
    <script src="jquery-1.7.2.js"></script>
    <script type="text/javascript" src="FusionCharts/FusionCharts.js"></script>
    <script src="aloha.js" data-aloha-plugins="common/ui,common/format,common/highlighteditables,common/link"></script>
</head>
<body>
    <div id="main">
        <div id="content"><p>Getting started with Aloha Editor!</p></div>


        <div id="chartContainer">FusionCharts XT will load here!</div> 
    </div>
    <script type="text/javascript">
    Aloha.ready( function() {
        Aloha.jQuery('#content').aloha();
    });
        var myChart = new FusionCharts("Column3D", "myChartId", "400", "300");
        myChart.setXMLData("<chart caption='Weekly Sales Summary' xAxisName='Week' " +
        "yAxisName='Sales' numberPrefix='$'>" +
          "<set label='Week 1' value='14400' />" +
          "<set label='Week 2' value='19600' />" +
          "<set label='Week 3' value='24000' />" +
          "<set label='Week 4' value='15700' />" +
        "</chart>");
        myChart.render("chartContainer");
    </script>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

我使用您提供的完全相同的HTML重新创建了您的问题。这似乎是eve.js的异步资源加载的问题 - Raphael依赖的内部组件。有三种方法可以解决这个问题:

  

请注意,这是FusionCharts版本3.3.0-release.18739中首次检测到的问题,可能不适用于其他版本。

1。 最简单的修复

按此特定顺序手动包含脚本文件FusionCharts.jsFusionCharts.HC.jsFusionCharts.HC.Charts.js

2。 编辑FusionCharts.HC.js

这是FusionCHarts.HC.js源文件的简单单行编辑。如果您有缩小版本,(这可能看起来很难看)...找到第144行并替换该行的第一部分

FusionCharts(["private","modules.renderer.js-raphael",function(){var l=this.hcLib,i,r=window.Raphael,C;(function(d){var j=/[\.\/]/,i=function(){},e=function(d,e){return d-e},l,r,C={n:{}},M=function(d,j)

FusionCharts(["private","modules.renderer.js-raphael",function(){var l=hfeve=this.hcLib,i,r=window.Raphael,C;(function(d){var j=/[\.\/]/,i=function(){},e=function(d,e){return d-e},l,r,C={n:{}},M=hfeve.eve=function(d,j)

  

如果您有源文件,请找到FusionCharts.HC.js的第5535行并将整行替换为eve = lib.eve = function(name, scope) {

3。使用修改后的代码。

我附加了修补后的FusionCharts.HC.js(缩小版)的链接,适用于试用版(未经测试的许可版本)并与v3.3.0.18739兼容。期待下一代FusionCharts将以某种方式解决这个问题。 :)

http://pastebin.com/raw.php?i=Zbhaq5hP

PS:Pastebin链接不会永远保留。因此,一旦托管链接可用,将更新和修改帖子。