I'm have some that uses jQuery.clone() to get the html of a page and then add it to a pre tag. It works correctly in Firefox and Chrome, but nothing happens in IE:
<!DOCTYPE html>
<html>
<head>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script>
$(function(){
$('button').click(function(){
var $clone = $('html').clone();
$('#output').text($clone.html());
});
});
</script>
<style>
article, aside, figure, footer, header, hgroup,
menu, nav, section { display: block; }
</style>
</head>
<body>
<button>run test</button>
<pre id="output"></pre>
</body>
</html>
Is there any know bug with IE that prevents this, or am I doing something wrong?
(I need to clone it because I'm doing some changes to it before outputting it)
If you want to just show the page text in the page, try this:
That works for me in Chrome, Firefox, and IE8.
I have noticed one big difference in what clone does in IE and others. In IE, it appears to clone everything, including script tags. Therefore if you have code inside the script tag that instantiates code, it will be instantiated again. In the case of this question it is probably encountering an infinite loop since it will continually call the code to clone itself.
This seems to work in IE, Firefox & Safari. I'm calling the javascript DOM API
cloneNode()
method instead of jQuery'sclone()
. Don't know why it works. You should probably do some more browser testing.