2017-11-01 3 views
-1

javascriptを使用してDOMの要素のスクリーンショットを取得し、ボタンを物理的にクリックすることなく自動的にローカルのコンピュータに保存します。私は多くの提案を見てきましたが、本当に私が望むやり方で働いている人はいません。これは私が読んだいくつかの例です。 example1example 2html2canvas:divのスクリーンショットを取りません

<!DOCTYPE html> 
<html> 
<body> 
<script src="jquery-3.2.1.min.js"></script> 
<p>This is some text.</p> 

<div style="color:#0000FF" id="myContainer" > 
<h3>This is a heading in a div element</h3> 
<p>This is some text in a div element.</p> 
</div> 

<p>This is some text.</p> 
<script type="text/javascript"> 
try { 
    debugger; 
    $.getScript("html2canvas.js", function() { 

         var takeScreenShot = function() { 

         html2canvas($("#myContainer"), { 

         onrendered: function (canvas) { 

          var tempcanvas=document.createElement("canvas"); 

          tempcanvas.width=350; 
          tempcanvas.height=350; 
          var context=tempcanvas.getContext("2d"); 

         context.drawImage(canvas,112,0,288,200,0,0,350,350); 
          var link=document.createElement("a"); 
           link.href=tempcanvas.toDataURL("image/png") 
           link.download = "myImage.png"; 
           link.click(); 

          } 
         }); 
        } }); 

    } 
    catch (err) { 
     alert(err.message); 
} 

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

問題は、私はエラーを取得していないと私は何のスクリーンショットを持っていないだということです。

答えて

0

関数takeScreenShotを定義していますが、それを実際に呼び出すことはありません。あなたはtakeScreenShot();

以上完全に関数を呼び出す必要があります。

try { 
debugger; 
$.getScript("html2canvas.js", function() { 

        var takeScreenShot = function() { 

        html2canvas($("#myContainer"), { 

        onrendered: function (canvas) { 

         var tempcanvas=document.createElement("canvas"); 

         tempcanvas.width=350; 
         tempcanvas.height=350; 
         var context=tempcanvas.getContext("2d"); 

        context.drawImage(canvas,112,0,288,200,0,0,350,350); 
         var link=document.createElement("a"); 
          link.href=tempcanvas.toDataURL("image/png") 
          link.download = "myImage.png"; 
          link.click(); 

         } 
        }); 
       } 
       takeScreenShot(); 
      }); 

} 
catch (err) { 
    alert(err.message); 
} 
+0

ありがとうございました。私もそれに気づいた。 – eskoba

関連する問題