0

我试图在 javascript 中生成谷歌仪表图表,然后生成生成图表的图像。但不知何故,图像在没有图表的情况下生成。我对 js 很陌生,因此无法理解我哪里出错了。请有人帮忙。

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>Using an existing canvas to draw on</title>
    <style>
        canvas {
            border: 1px solid black;
        }
        button {
            clear: both;
            display: block;
        }
        #content {
            background: rgba(100, 255, 255, 0.5);
            padding: 50px 10px;
        }
    </style>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script src=
"https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js">
    </script>
    <script type="text/javascript">

        google.charts.load('current', {'packages':['gauge']});
              google.charts.setOnLoadCallback(drawChart);
        
              function drawChart() {
        
                var data = google.visualization.arrayToDataTable([
                  ['Label', 'Value'],
                  ['Extroversion', 80],
                  ['Agreeableness', 55],
                  ['Conscientiousness', 68],
                  ['Neuroticism',78],
                  ['Openness',85]
                ]);
        
                var options = {
                  width: 800, height: 500,
                  greenColor:'#30D5C8',
                  greenFrom:60, greenTo:70, 
                  blueColor: '#3bb0cb',
                  blueFrom: 70, greenTo:80,
                  redColor : '#478ace',
                  redFrom : 80, redTo: 90,
                  yellowColor : '#5264d0',
                  yellowFrom:90, yellowTo: 100,
                  minorTicks: 5
                };
        
                var chart = new google.visualization.Gauge(document.getElementById('chart_div'));
        
                chart.draw(data, options);
              }
        </script>
</head>
<body>
<div><h1>HTML content to render:</h1>
    <div id="content"><div id="chart_div"></div></div>
</div>
<h1>Existing canvas:</h1>

<script type="text/javascript" src="html2canvas.js"></script>
<button>Run html2canvas</button>
<canvas width="900" height="900" style="display:none;"></canvas>
<script >
    var canvas = document.querySelector("canvas");
    var ctx = canvas.getContext("2d");

    var ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.arc(75,75,50,0,Math.PI*2,true); // Outer circle
    ctx.moveTo(110,75);
    ctx.arc(75,75,35,0,Math.PI,false);   // Mouth (clockwise)
    ctx.moveTo(65,65);
    ctx.arc(60,65,5,0,Math.PI*2,true);  // Left eye
    ctx.moveTo(95,65);
    ctx.arc(90,65,5,0,Math.PI*2,true);  // Right eye
    ctx.stroke();

    document.addEventListener("DOMContentLoaded", function() {
        html2canvas(document.body, {canvas: canvas, scale: 1}).then(function(canvas) {
            console.log('Drew on the existing canvas');
            // canvasΪת�����Canvas����
            let oImg = new Image();
            oImg.src = canvas.toDataURL();  // ����ͼƬ
            console.log(oImg.src);
            $.ajax({  
                url: "script.php",  
                type: "POST",  
                data: {  
                    image: oImg.src 
                },  
                dataType: "html",  
                success: function() {  
                    alert('Success!!');  
                    location.reload();  
                }  
            });  
            document.body.appendChild(oImg);  // �����ɵ�ͼƬ���ӵ�body
        });
    }, false);

</script>
</body>
</html>

我也尝试过设置延迟,但这也没有用

4

0 回答 0