Skip to content

Instantly share code, notes, and snippets.

@netsi1964
Created October 10, 2012 07:09
Show Gist options
  • Save netsi1964/3863665 to your computer and use it in GitHub Desktop.
Save netsi1964/3863665 to your computer and use it in GitHub Desktop.
javascript doScreenshot()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Bootstrap, from Twitter</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<!-- Le styles -->
<link href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css" rel="stylesheet">
<style type="text/css">
body { padding-top: 60px; padding-bottom: 40px; }
</style>
<link href="http://twitter.github.com/bootstrap/assets/css/bootstrap-responsive.css" rel="stylesheet">
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="http://twitter.github.com/bootstrap/assets/images/favicon.ico">
<link rel="apple-touch-icon" href="images/apple-touch-icon.png">
<link rel="apple-touch-icon" sizes="72x72" href="http://twitter.github.com/bootstrap/assets/images/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="114x114" href="http://twitter.github.com/bootstrap/assets/images/apple-touch-icon-114x114.png">
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="#">Project name</a>
<div class="nav-collapse">
<ul class="nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
<p class="navbar-text pull-right">Logged in as <a href="#">username</a></p>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row-fluid">
<div class="span3">
<div class="well sidebar-nav">
<ul class="nav nav-list">
<li class="nav-header">Sidebar</li>
<li class="active"><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li class="nav-header">Sidebar</li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li class="nav-header">Sidebar</li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</div><!--/.well -->
</div><!--/span-->
<div class="span9">
<div class="hero-unit">
<h1>doScreenshot();</h1>
<button onclick="doScreenshot();">Take screenshoot</button>​​​​​​​​​​​​​​​​​​​​​​​​
<p><a class="btn btn-primary btn-large">Learn more &raquo;</a></p>
</div>
<div class="row-fluid">
<div class="span4">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn" href="#">View details &raquo;</a></p>
</div><!--/span-->
<div class="span4">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn" href="#">View details &raquo;</a></p>
</div><!--/span-->
<div class="span4">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn" href="#">View details &raquo;</a></p>
</div><!--/span-->
</div><!--/row-->
<div class="row-fluid">
<div class="span4">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn" href="#">View details &raquo;</a></p>
</div><!--/span-->
<div class="span4">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn" href="#">View details &raquo;</a></p>
</div><!--/span-->
<div class="span4">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn" href="#">View details &raquo;</a></p>
</div><!--/span-->
</div><!--/row-->
</div><!--/span-->
</div><!--/row-->
<hr>
<footer>
<p>&copy; Company 2012</p>
</footer>
</div><!--/.fluid-container-->
<!-- Le javascript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="http://code.jquery.com/jquery.min.js"></script>
<script src="https://raw.github.com/twitter/bootstrap/master/js/bootstrap-transition.js"></script>
<script src="https://raw.github.com/twitter/bootstrap/master/js/bootstrap-alert.js"></script>
<script src="https://raw.github.com/twitter/bootstrap/master/js/bootstrap-modal.js"></script>
<script src="https://raw.github.com/twitter/bootstrap/master/js/bootstrap-dropdown.js"></script>
<script src="https://raw.github.com/twitter/bootstrap/master/js/bootstrap-scrollspy.js"></script>
<script src="https://raw.github.com/twitter/bootstrap/master/js/bootstrap-tab.js"></script>
<script src="https://raw.github.com/twitter/bootstrap/master/js/bootstrap-tooltip.js"></script>
<script src="https://raw.github.com/twitter/bootstrap/master/js/bootstrap-popover.js"></script>
<script src="https://raw.github.com/twitter/bootstrap/master/js/bootstrap-button.js"></script>
<script src="https://raw.github.com/twitter/bootstrap/master/js/bootstrap-collapse.js"></script>
<script src="https://raw.github.com/twitter/bootstrap/master/js/bootstrap-carousel.js"></script>
<script src="https://raw.github.com/twitter/bootstrap/master/js/bootstrap-typeahead.js"></script>
<script type="text/javascript">
(function(exports){function urlsToAbsolute(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);if(absURL){return el;}else{if(attr.indexOf('/')!=0){el.setAttribute(attrName,document.location.origin+document.location.pathname+attr);}else if(attr.match(/^\/\//)){el.setAttribute(attrName,document.location.protocol+attr);}else{el.setAttribute(attrName,document.location.origin+attr);}
return el;}});return nodeList;}
function screenshotPage(){urlsToAbsolute(document.images);urlsToAbsolute(document.querySelectorAll("link[rel='stylesheet']"));urlsToAbsolute(document.scripts);var screenshot=document.documentElement.cloneNode(true);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 doScreenshot(){window.URL=window.URL||window.webkitURL;window.open(window.URL.createObjectURL(screenshotPage()));}
exports.screenshotPage=screenshotPage;exports.doScreenshot=doScreenshot;})(window);
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment