首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript可以在jsfiddle上运行,但不能在localhost上运行

Javascript可以在jsfiddle上运行,但不能在localhost上运行
EN

Stack Overflow用户
提问于 2013-05-19 22:02:47
回答 2查看 1.5K关注 0票数 0

我正在尝试将谷歌图表转换为图像。我在jsfiddle (http://jsfiddle.net/SCjm8/32/)上找到了一个完美的例子,但是当我将代码粘贴到本地主机上时,我得到了这个错误:

代码语言:javascript
运行
复制
Uncaught ReferenceError: canvg is not defined 

为什么它可以在jsfiddle上运行,而不能在我的localhost上运行?

编辑:只需要添加位于左侧的jsfiddle的3个外部资源,将在未来知道这一点

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-19 22:10:49

jsfiddle允许用户添加对外部资源的引用。上面的jsfiddle中有一个对canvg.js的引用。查看您的邮件,您似乎缺少对此文件的引用。要查看小提琴引用的所有外部引用,请展开外部资源并将这些引用添加到本地主机文件中。

在jsfiddle中,有三个外部javascript文件:

  1. http://canvg.googlecode.com/svn/trunk/canvg.js
  2. http://canvg.googlecode.com/svn/trunk/rgbcolor.js
  3. http://www.google.com/jsapi?fake=.js

确保您引用了所有这些内容。

有关jsfiddle的更多信息,请访问documentation页面。

票数 2
EN

Stack Overflow用户

发布于 2013-05-19 22:17:59

正如@Pitamber所提到的,您需要在此处添加更多信息- https://code.google.com/p/canvg/

因此,一个有效的例子是

代码语言:javascript
运行
复制
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script type="text/javascript" src="http://canvg.googlecode.com/svn/trunk/rgbcolor.js"></script> 
    <script type="text/javascript" src="http://canvg.googlecode.com/svn/trunk/StackBlur.js"></script>
    <script type="text/javascript" src="http://canvg.googlecode.com/svn/trunk/canvg.js"></script> 
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
</head>
<body>
    <div id="img_div" style="position: fixed; top: 0; right: 0; z-index: 10; border: 1px solid #b9b9b9">
        Image will be placed here
    </div>

    <button onclick="saveAsImg(document.getElementById('pie_div'));">Save as PNG Image</button>
    <button onclick="toImg(document.getElementById('pie_div'), document.getElementById('img_div'));">Convert to image</button>
    <div id="pie_div"></div>
</body>
<script>
        function getImgData(chartContainer) {
            var chartArea = chartContainer.getElementsByTagName('svg')[0].parentNode;
            var svg = chartArea.innerHTML;
            var doc = chartContainer.ownerDocument;
            var canvas = doc.createElement('canvas');
            canvas.setAttribute('width', chartArea.offsetWidth);
            canvas.setAttribute('height', chartArea.offsetHeight);


            canvas.setAttribute(
                    'style',
                    'position: absolute; ' +
                    'top: ' + (-chartArea.offsetHeight * 2) + 'px;' +
                    'left: ' + (-chartArea.offsetWidth * 2) + 'px;');
            doc.body.appendChild(canvas);

            canvg(canvas, svg);
            var imgData = canvas.toDataURL('image/png');
            canvas.parentNode.removeChild(canvas);
            return imgData;
        }

        function saveAsImg(chartContainer) {
            var imgData = getImgData(chartContainer);

            // Replacing the mime-type will force the browser to trigger a download
            // rather than displaying the image in the browser window.
            window.location = imgData.replace('image/png', 'image/octet-stream');
        }

        function toImg(chartContainer, imgContainer) {
            var doc = chartContainer.ownerDocument;
            var img = doc.createElement('img');
            img.src = getImgData(chartContainer);

            while (imgContainer.firstChild) {
                imgContainer.removeChild(imgContainer.firstChild);
            }
            imgContainer.appendChild(img);
        }

        google.load('visualization', '1', {packages: ['corechart', 'treemap', 'geochart']});

        google.setOnLoadCallback(drawChart);

        function drawChart() {
            // Pie chart
            var data = new google.visualization.DataTable();
            data.addColumn('string', 'Task');
            data.addColumn('number', 'Hours per Day');
            data.addRows(5);
            data.setValue(0, 0, 'Work');
            data.setValue(0, 1, 11);
            data.setValue(1, 0, 'Eat');
            data.setValue(1, 1, 2);
            data.setValue(2, 0, 'Commute');
            data.setValue(2, 1, 2);
            data.setValue(3, 0, 'Watch TV');
            data.setValue(3, 1, 2);
            data.setValue(4, 0, 'Sleep');
            data.setValue(4, 1, 7);

            var chart = new google.visualization.PieChart(document.getElementById('pie_div'));
            chart.draw(data, {width: 450, height: 300, title: 'My Daily Activities'});

        }
    </script>
</html>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16635455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档