SCRIPT87:无效参数在IE8中使用HighCharts v3.0.5

时间:2013-09-26 17:20:52

标签: javascript jquery highcharts

使用highcharts的源版本我看到我收到此错误:

  

highcharts.src.js,第5099行第4期

这是var VMLRendererExtension块:

init: function (container, width, height) {
        var renderer = this,
            boxWrapper,
            box;

        renderer.alignedObjects = [];

        boxWrapper = renderer.createElement(DIV);
        box = boxWrapper.element;
        box.style.position = RELATIVE; // for freeform drawing using renderer directly
        container.appendChild(boxWrapper.element);


        // generate the containing box
        renderer.isVML = true;
        renderer.box = box;
        renderer.boxWrapper = boxWrapper;


        renderer.setSize(width, height, false);

        // The only way to make IE6 and IE7 print is to use a global namespace. However,
        // with IE8 the only way to make the dynamic shapes visible in screen and print mode
        // seems to be to add the xmlns attribute and the behaviour style inline.
        if (!doc.namespaces.hcv) {

            doc.namespaces.add('hcv', 'urn:schemas-microsoft-com:vml');

            // setup default css
            doc.createStyleSheet().cssText =
                'hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke' +
                '{ behavior:url(#default#VML); display: inline-block; } ';

        }
    }

错误发生在doc.createStyleSheet().cssText项目上。不知道它的哪一部分正在消亡。

我们的页面上有两个图表。主数据图表和跨区域分布数据的图表。如果我只在页面上显示一个或另一个图表(意味着甚至不呈现一个图表),我不会收到此错误。如果两个图表都被渲染,我会按执行顺序获得第一个图表但不会获得第二个图表。我们的图表代码可以找到here。请注意,我无法在jsFiddle上重现此错误。此错误仅发生在IE8中。

我在HighCharts论坛上看到了这个post。我无法更改文档类型,因为我的代码只是较大网站的一小部分。不显示错误的唯一方法是注释掉他的doc.createStyleSheet().cssText行。我宁愿不只是评论这个。

现在,这是丑陋的地方。这只发生在这一页上。如果我们转到显示数据的任何其他页面,我不会收到此错误。那么,你说什么。好吧,图表构建器代码在每个页面上都是相同的。唯一的区别是系列(类别和值)和图表的高度。我们根据我们使文本更容易阅读的系列数量动态增加图表的高度。我已经在分布图中测试了不会抛出此错误的数据集的各种类别的类别。如果我转到其他页面并尝试匹配失败页面上图表的高度,我也无法重现此错误。

1 个答案:

答案 0 :(得分:0)

比较工作页面和非工作页面之间的以下项目:

  • doctypes
  • 脚本标记
  • 元标记