Следующее должно работать как минимум в Firefox (через XMLSerializer ), Internet Explorer, Chrome и Safari (через outerHTML ).В браузерах, которые не поддерживают ни то, ни другое, он вернется к innerHTML
, но недостатком будет то, что сам корневой элемент (<html>
) не будет включен.
function getMyCode()
{
if ("XMLSerializer" in window)
return new XMLSerializer().serializeToString(document.documentElement);
else if ("outerHTML" in document.documentElement)
return document.documentElement.outerHTML;
else
return document.documentElement.innerHTML;
}
Опять же, если вы хотите "настоящий"«Исходный код, а не сериализованную версию DOM, вы не сможете загрузить снова - браузер не обязательно сохранит его.Вы можете использовать XMLHttpRequest :
function getMyCode()
{
var req = new XMLHttpRequest();
req.open("GET", window.location.href);
req.onreadystatechange = function()
{
if (this.readyState != 4)
return;
alert(this.responseText);
};
req.send(null);
}