2016-02-05 80 views
1

我试图加载图表中的IFRAME(使用Highcharts),我加载highcharts但控制台返回$(...)。highcharts不是一个函数加载Highcharts

$('<iframe id="panel_frame_container" frameborder="0"/>').load(function(){ 
      $('#panel_frame_container').contents().find('body').append("<div id='panel_chart_container'></div>").end() 
                .find('body').append('<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"><\/script>').end() 
                .find('body').append('<script src="https://code.highcharts.com/highcharts.js"><\/script>').end() 
                .find('body').append('<script src="https://code.highcharts.com/highcharts-more.js"><\/script>').end() 
                .find('body').append('<script src="https://code.highcharts.com/modules/exporting.js"><\/script>').end() 
                .find('body').append("<script type='text/javascript'>$(document).ready(function(){console.log('loaded');$('#panel_chart_container').highcharts("+data2+");});<\/script>"); 
     }).appendTo($(".panel-body")); 

https://jsfiddle.net/s82v657e/

我的目标是让用户设定为自己的DATAS(数据2),所以我选择一个iframe来锁定他从我的主窗口,因为他可以在highcharts使用的功能,所以我可能会添加一些沙箱标签在我的iframe时,第一部分将工作。

+0

您需要确定您在iframe中加载的页面中包含Highcharts。 iframe是一个单独的窗口,不会自动访问其父项的所有内容。 **在你的小提琴的情况下,你需要确保你包括Highcharts - 我没有看到它在你的资源列表**。 – jlbriggs

+0

谢谢,但Highcharts被加载在iframe使用jQuery L.64,65和66 –

+0

如何使用Highcharts构造函数?一个是'new Highcharts.Chart(options,callback)',第二个是'Highcharts.chart(容器,选项,回调)'。它看起来像jQuery尚未加载,所以构造函数不附加到'$'命名空间。 –

回答

2

我想你不应该用那样的JavaScript注入你的脚本。 而是创建一个动态页面就像所有内容就会容易得多iframe.php。

I帧有限制的权利和加载你的脚本的方式并不能保证你就会为iframe.php内容的另一个

简单的例子后做了一个,只是通过iframe网址里面了Data_ID:

<?php 
if (isset($_GET['data_id'])) 
$data = getGraphics($_GET['data_id']); 
?> 
<html> 
<head> 
</head> 
<body> 
<div id="panel_chart_container"></div> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
<script src="https://code.highcharts.com/highcharts.js"></script> 
<script src="https://code.highcharts.com/highcharts-more.js"></script> 
<script src="https://code.highcharts.com/modules/exporting.js"></script> 
<script type='text/javascript'> 
$(document).ready(function(){ 
$('#panel_chart_container').highcharts(<?=$data;?>); 
}); 
</script> 
</body> 
</html> 
+0

我结束了使用其他内容而不是iframe,但您的解决方案工作perfeclty!非常感谢 ! –

+0

你用@Nico_做了什么? –

+0

我回到@mymyoux的iframe解决方案,我不能安全地覆盖我需要的每个案例(我使用了div,并且用javascript更改了html代码,但由于我希望用户能够输入数据, iframe更好地防止安全问题,否则用户可能会破坏我的页面)。 –