1

我正在开发一个 Windows 桌面应用程序,它包含一个 System::Windows::Forms::WebBrowser 类型的对象。该应用程序处理一些性能数据并显示带有各种图形(直方图、饼图等)的 HTML 页面。

它的工作原理如下:

  • 应用程序在本地临时路径上生成一个 HTML 文件(例如,.../local/path/myfile.html)
  • 应用程序的 WebBrowser 对象导航到生成的文件:

    webBrowser1->Navigate(".../local/path/myfile.html")

  • jQuery 和其他一些插件(例如,jqPlot)用于创建各种图形,myfile.html 在应用程序中呈现

myfile.html 包含一段代码:

<div id="frame-time-histograms">
    <div id="frame-time-histogram-1">
        <div id="frame-time-histogram-1-target-plot" class="histogram-target" style="height:250px; width:900px;"></div>
        <div id="frame-time-histogram-1-controller-plot" class="histogram-controller" style="height:100px; width:900px;"></div>
        <script id="frame-time-histogram-1-data" class="histogram-data" type="text/plain">
            [{"type" : "Type 1", "shortest" : 12, "longest" : 74}, [[0, 0], [1, 12.632], [2, 16.619], [3, 16.592], [4, 16.664], [5, 16.586]]]
        </script>
    </div>
    <div id="frame-time-histogram-2">
        <div id="frame-time-histogram-2-target-plot" class="histogram-target" style="height:250px; width:900px;"></div>
        <div id="frame-time-histogram-2-controller-plot" class="histogram-controller" style="height:100px; width:900px;"></div>
        <script id="frame-time-histogram-2-data" class="histogram-data" type="text/plain">
            [{"type" : "Type 2", "shortest" : 24, "longest" : 19}, [[0, 0], [1, 20.145], [2, 20.091], [3, 20.301], [4, 20.109], [5, 20.087]]]
        </script>
    </div>
</div>

注意:这里我使用脚本标签作为直方图的数据容器。

我的 JavaScript 文件包含一段代码:

var histograms = $('div#frame-time-histograms');
histograms.children().each(function(index) {
    var histogramTargetId = $(this).find('div.histogram-target').attr('id');
    var histogramControllerId = $(this).find('div.histogram-controller').attr('id');

    var histogramData = JSON.parse($(this).find('script.histogram-data').html());

然而 JSON.parse() 似乎没有做任何事情。我在此行之前和之后添加了 alert("hello") ,但只执行了第一个。

如果我转到临时路径并双击 myfile.html,JSON.parse() 工作正常。我可以在我的网络浏览器(Chrome、FF 和 IE)中查看所有图表。

有人能告诉我我做错了什么吗?

4

1 回答 1

1

我刚刚注意到 jqPlot 提供了它的 json2.js 文件版本:

...\plugins\jqplot.json2.js

为了解决我遇到的问题,我在 myfile.html 中包含了这个 js 文件并进行了更改

JSON.parse($(this).find('script.histogram-data').html());

$.jqplot.JSON.parse($(this).find('script.histogram-data').html());
于 2012-04-26T18:12:09.987 回答