Search code examples
laravelhtml2canvas

HTML2Canvas Screenshot Div


I am converting div element to image or screenshot. I've search throughout the internet and found out about html2canvas. I tried using it but no luck. Is there anyone who knows how to make it work? Here is my source code.

<html>
<head>
 <title> Screenshot </title>
</head>
<body>

  <div id="container">
    <h1> Screen shot me </h1>
  </div>
  <button onclick = "screenshot()"> Capture </button>
</body>

 <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js"></script>
 <script>
  function screenshot(){
    html2canvas(document.getElementById('container')).then(function(canvas){
      document.body.appendChild(canvas);
    })
  }
 </script>
</html>

My error keeps saying Uncaught TypeError: html2canvas(...).then is not a function at screenshot at HTMLButtonElement.onclick. Did I miss something?

Im using Laravel 5.6 with NPM. Thankyou in advance!


Solution

  • Tested Chrome, Firefox ok, IE 11 needs adding 2 extra js library to support promise.

    function takeSnapShot() {
    	html2canvas(document.querySelector("#capture")).then(function(canvas) {
    		document.querySelector("#newCanvas").appendChild(canvas);
    	});
    }
    <script src="https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.auto.min.js"></script> 
    <script src="https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script>
    <div id="capture" style="padding: 10px; background: #f5da55">
        <h4 style="color: #000; "> Screen shot me </h4>
    </div>
    <input type="button" value="Capture" onclick="takeSnapShot()"/>
    <div id="newCanvas"></div>
    </html>