javascript - IE8 中的 Google Chart 问题 - SCRIPT70 : Permission denied format+en, default+en,ui+en,corechart+en.I.js, line 86 character 16

标签 javascript ajax charts internet-explorer-8 google-visualization

我在 IE8 中使用 Google Charts 时无限出现以下错误

SCRIPT70: Permission denied format+en,default+en,ui+en,corechart+en.I.js, line 86 character 16

从我的父页面我有 drawChart() 和全局 chartDatas 数组变量,从这个页面我通过 ajax 调用调用子页面,在成功调用子页面后有图表的 chartDatas 数组输入我调用 drawChart() 函数来绘制图表使用新数组,当时在IE8以上的页面上鼠标悬停时不断出现错误。所以它在我的应用程序中引起了很多问题。这是在 IE8 中重现此问题的示例代码(在最新的浏览器中,如 chrome、firefox、IE10,它工作正常)

parentPage.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE>
<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
        <script type="text/javascript" src="https://www.google.com/jsapi"></script>
        <script type="text/javascript">
            google.load("visualization", "1", {packages: ["corechart"]});
            google.setOnLoadCallback(drawChart);
            var year = 2008;
            var chartDatas = [
                ['Year', 'Sales', 'Expenses'],
                ['2004', 1000, 400],
                ['2005', 1170, 460],
                ['2006', 660, 1120],
                ['2007', 1030, 540]
            ];
            function drawChart() {
                var data = google.visualization.arrayToDataTable(chartDatas);

                var options = {
                    title: 'Company Performance',
                    vAxis: {title: 'Year', titleTextStyle: {color: 'red'}}
                };

                var chart = new google.visualization.BarChart(document.getElementById('chart_div'));
                chart.draw(data, options);
            }
            function callChild() {
                $.ajax({
                    url: "childJsp.jsp",
                    complete: function(res, textStatus) {
                        $('#childPage').html(res.responseText);                        
                    }
                });
            }
        </script>
    </head>
    <body>
        <div id="chart_div" style="width: 900px; height: 500px;"></div>
        <br>
        <input type="button" onclick="callChild();" value="call child page">
        <div id="childPage"> </div>
    </body>
</html>

childJsp.jsp

<script>       
    chartDatas.push([''+(year++), 900, 400]);
    drawChart();
</script>

enter image description here

通过ajax调用加载子页面后,控制台打印错误

enter image description here

最佳答案

我怀疑您需要稍微重新安排您的代码,以便重复使用相同的图表对象,而不是一遍又一遍地创建新的图表对象。

这可能有效:

将您的 javascript 更改为:

function drawChart() {
    var data = google.visualization.arrayToDataTable(chartDatas);

    var options = {
        title: 'Company Performance',
        vAxis: {title: 'Year', titleTextStyle: {color: 'red'}}
    };

    var chart = new google.visualization.BarChart(document.getElementById('chart_div'));
    chart.draw(data, options);

    function callChild() {
        $.ajax({
            url: "childJsp.jsp",
            complete: function(res, textStatus) {
                $('#childPage').html(res.responseText);
                var data = google.visualization.arrayToDataTable(chartDatas);
                chart.draw(data, options);
            }
        });
    }

    var button = document.querySelector('#callChild');
    if (document.addEventListener) {
        el.addEventListener('click', callChild);
    }
    else {
        el.attachEvent('onclick', callChild);
    }
}

在您的回复中,删除 callChild函数调用。在您的 HTML 中,将按钮更改为:

<input type="button" id="callChild" value="call child page">

(或使用不同的 ID,只需确保 javascript 中的 button 元素与 HTML 中的元素匹配)。

这可能存在时间问题,因此更好的解决方案是将 childData.jsp 页面的输出更改为格式为 ["<year>",<sales>,<expenses>] 的 JSON 字符串。 , 并更改 callChilddrawChart 中发挥作用对此:

function callChild() {
    $.ajax({
        url: "childJsp.jsp",
        dataType: 'json',
        complete: function(res, textStatus) {
            data.addRow(res);
            chart.draw(data, options);
        }
    });
}

关于javascript - IE8 中的 Google Chart 问题 - SCRIPT70 : Permission denied format+en, default+en,ui+en,corechart+en.I.js, line 86 character 16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23847754/

相关文章:

javascript - 为什么无法从原型(prototype)更改构造函数?

javascript - 展开 div 的其余部分以显示完整内容(带按钮的 onClick)

javascript - Google Maps API 与 StoreLocator 和 MarkerClusterer 混合问题

css - 避免 AJAX 加载的 CSS 修改文档

ruby-on-rails - Ajax 推送引擎

java - PrimeFaces v3.5 : Dialog is not shown using RequestContext on non-Ajax calls

angular - nvd3 Angular2 动态更改图表选项

javascript - 表 onclick 行 jQuery

javascript - D3.js 在图表之间转换

javascript - Google Geochart - 来自 JSON 数据的相同国家/地区多个值