使用Javascript从浏览器的视图源功能获取HTML

时间:2013-09-24 20:38:49

标签: javascript html browser

是否可以通过使用浏览器的功能 view-source 以某种方式将HTML代码转换为Javascript字符串:

view-source:http://www.google.com

我正在尝试使用这样的代码,但是我收到的文档没有被定义错误:

document.getElementsByTagName('html')[0].innerHTML;

我知道跨域请求是不可能的,除非使用某种黑客攻击,但这看起来容易得多,尽管获取代码非常困难。我不想访问网站以防止图像和CSS加载。

3 个答案:

答案 0 :(得分:0)

除非与您合作,否则您无法从其他域读取数据。

如果您确实有合作,可以直接发送CORS AJAX请求。

答案 1 :(得分:0)

这是在Firefox中执行此操作的一种方法。它在其他任何地方都不起作用。 为简单起见,我使用了alert()和sync“ajax”,但是对于任何ajax lib,异步版本都是微不足道的。

主要的是获得firefox的漂亮视图源html,它表示行号,HTML错误和标记html部分,如attribs和内容到语义包装器。这是我知道在没有互联网连接的情况下在浏览器中验证html的唯一方法...

// sync url fetcher function:
function IO(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.send();return b.responseText}

// create a new iframe to show the source code:
var fr=document.createElement("iframe");

// when it loads, let's view it using a simple alert()
fr.onload=function(){
  alert(win.document.documentElement.outerHTML);
  document.body.removeChild(fr);
};

// now add the frame into the document:
document.body.appendChild(fr);

// now assign the view-source url to the frame to trigger it's onload()
url= "/"; //just use site's home page for this demo
fr.src="view-source:data:text/html,"+escape( IO( url ) );

哦,当然,这只适用于您域中的网址或使用cors设置的网址。

答案 2 :(得分:0)

适用于Chrome和Firefox。 Safari假设。 IE未经测试。

document.querySelector('html').innerHTML

*编辑我认为您的错误来自其他地方。这句话虽然笨拙,却完全有效。

如果您收到有关未定义文档的错误,那么您在文档对象准备就绪之前执行此操作(您是在等待DOMREADY还是加载?)或者在DOM界面外执行它(Web worker?)。