How to create a screenshot of browser window and save it to another page

1.4k views Asked by At

I would like to ask what is the logic behind capturing the screen of browser window.Can we open this screenshot image in popup where user have an option to save the screenshot.

Here is my code In this code the Problem is that my browser screen have image also it captures text but not capturing image I couldn't get where the problem is ? Here is my code

    <html lang="en">  
    <head>  
        <title>Take Web Page Screenshot with HTML5 and JavaScript </title>       
    </head>  
    <body>
      <div> 
        <div style="background-image:url('assets/images/act.png');height: 50px;width: 50px;"></div>

        <div><a class="btn btn-success" href="javascript:void(0);" onclick="generate()">Generate  
            Screenshot ยป</a>
        </div>
        <div>fsaffsfasfasfasfasfasff</div>
        </div>
        <script type="text/javascript">  
            (function (exports) {  
                function urlsToAbsolute(nodeList) {
                    console.log(nodeList);
                    if (!nodeList.length) {  
                        return [];  
                    }  
                    var attrName = 'href';  
                    if (nodeList[0].__proto__ === HTMLImageElement.prototype || nodeList[0].__proto__===HTMLScriptElement.prototype) {  
                        attrName = 'src';  
                    }  
                    nodeList = [].map.call(nodeList, function (el, i) {  
                        var attr = el.getAttribute(attrName);  
                        if (!attr) {  
                            return;  
                        }  
                        var absURL = /^(https?|data):/i.test(attr);
                        console.log(absURL);
                        if (absURL) {  
                            return el;  
                        } else {  
                            return el;  
                        }  
                    });  
                    return nodeList;  
                }  

                function screenshotPage() {  
                    urlsToAbsolute(document.images);  
                    urlsToAbsolute(document.querySelectorAll("link[rel='stylesheet']"));  
                    var screenshot = document.documentElement.cloneNode(true);  
                    var b = document.createElement('base');  
                    b.href = document.location.protocol + '//' + location.host;  
                    var head = screenshot.querySelector('head');  
                    head.insertBefore(b, head.firstChild);  
                    screenshot.style.pointerEvents = 'none';  
                    screenshot.style.overflow = 'hidden';  
                    screenshot.style.webkitUserSelect = 'none';  
                    screenshot.style.mozUserSelect = 'none';  
                    screenshot.style.msUserSelect = 'none';  
                    screenshot.style.oUserSelect = 'none';  
                    screenshot.style.userSelect = 'none';  
                    screenshot.dataset.scrollX = window.scrollX;  
                    screenshot.dataset.scrollY = window.scrollY;  
                    var script = document.createElement('script');  
                    script.textContent = '(' + addOnPageLoad_.toString() + ')();';  
                    screenshot.querySelector('body').appendChild(script);  
                    var blob = new Blob([screenshot.outerHTML], {  
                        type: 'text/html'  
                    });                
                    return blob;  
                }  

                function addOnPageLoad_() {  
                    window.addEventListener('DOMContentLoaded', function (e) {  
                        var scrollX = document.documentElement.dataset.scrollX || 0;  
                        var scrollY = document.documentElement.dataset.scrollY || 0;  
                        window.scrollTo(scrollX, scrollY);  
                    });  
                }  

                function generate() {  
                    window.URL = window.URL || window.webkitURL;  
                    window.open(window.URL.createObjectURL(screenshotPage()));  
                }  
                exports.screenshotPage = screenshotPage;  
                exports.generate = generate;  
            })(window);  
        </script>  
    </body>  
    </html>
0

There are 0 answers