查看生成的网页源的最佳途径?
我正在寻找一个工具,它会给我正确的生成的源代码,包括通过AJAX请求input到W3的validation器的DOM更改。 我已经尝试了以下方法:
- Web开发工具栏 – 根据文档types生成无效的源文件(例如,删除标签的自closures部分)。 丢失页面的文档types部分。
- Firebug – 修复源代码中的潜在缺陷(例如未封闭的标签)。 也失去标签的doctype部分,并注入本身是无效的HTML控制台。
- IE开发工具栏 – 根据文档types生成无效的源文件(例如,它使所有的标签大写,对XHTML规范)。
- 突出显示+查看select源 – 经常难以获得整个页面,也不包括doctypes。
是否有任何程序或插件,将给我的源的确切当前版本,没有修复或以某种方式更改? 到目前为止,Firebug似乎是最好的,但我担心它可能会解决我的一些错误。
解
事实certificate,Justin解释说,我没有确切的解决办法。 最好的解决scheme似乎是validationFirebug控制台内部的源代码,尽pipe它会包含一些由Firebug造成的错误。 我还要感谢Forgotten Semicolon,解释为什么“查看生成的源”与实际的源不匹配。 如果我可以标记2个最好的答案,我会的。
[更新以回应编辑问题中的更多细节]
你遇到的问题是,一旦页面被Ajax请求修改,当前的HTML只存在于浏览器的DOM内部 - 不再有任何独立的源HTML,你可以validation,而不是你可以从DOM。
正如你所观察到的,IE的DOM以大写forms存储标签,修复了未封闭的标签,并对原来的HTML进行了大量的其他修改。 这是因为浏览器通常很擅长处理带有问题的HTML(例如未封闭的标签)并修正这些问题以显示对用户有用的东西。 一旦HTML被IE规范化,就我所知,原始的源代码HTML基本上从DOM的angular度来说是丢失了的。
火狐最喜欢这些变化,所以萤火虫可能是你最好的select。
最后的(也是更劳动密集的)选项可能适用于简单的ajax变更的页面,例如从服务器获取一些HTML并将其导入特定元素的页面。 在这种情况下,您可以使用fiddler或类似工具手动将原始HTML与Ajax HTML拼接在一起。 这可能比它的价值更麻烦,而且容易出错,但这又是一种可能性。
[原始回答原始问题]
Fiddler( http://www.fiddlertool.com/ )是一个免费的,独立于浏览器的工具,可以很好地获取浏览器接收的HTML。 它可以显示networking上的确切字节以及解码/解压缩/等内容,您可以将其input任何HTML分析工具。 它还显示标题,时间,HTTP状态,以及许多其他好东西。
如果您想testing服务器如何响应稍微不同的标头,也可以使用Fiddler来复制和重build请求。
提琴手作为一个代理服务器,坐在你的浏览器和网站之间,并双向loggingstream量。
贾斯汀死了。 这里的关键是HTML只是描述文档的一种语言。 一旦浏览器读取它, 它就消失了 。 打开标签,closures标签和格式都由parsing器处理,然后消失 。 任何显示HTML的工具都会根据文档的内容生成它 ,所以它总是有效的。
我不得不向另外一个网页开发者解释一下,他花了一点时间才接受它。
您可以在任何JavaScript控制台中为自己尝试:
el = document.createElement('div'); el.innerHTML = "<p>Some text<P>More text"; el.innerHTML; // <p>Some text</p><p>More text</p>
未封闭标签和大写标签名称已经消失,因为HTML在第二行之后被parsing和丢弃。
从JavaScript修改文档的正确方法是使用document
方法( createElement
, appendChild
, setAttribute
等),并且您会发现在任何这些函数中都没有对标记或HTML语法的引用。 如果您正在使用document.write
, innerHTML
或其他以HTML语言进行的调用来修改您的页面,validation它的唯一方法是捕获您要放入的内容并单独validation该HTML。
也就是说,获取文档的HTML表示的最简单的方法是:
document.documentElement.innerHTML
我知道这是一个老post,但我只是find了这块金子 。 这是旧的(2006年),但仍然适用于IE9。 我个人添加了这个书签。
只需将其粘贴到浏览器的地址栏即可:
javascript:void(window.open("javascript:document.open(\"text/plain\");document.write(opener.document.body.parentNode.outerHTML)"))
至于Firefox,网页开发工具栏做的工作。 我通常使用这个,但有时,一些脏的第三方asp.net控件基于用户代理生成differents标记…
编辑
正如Bryan在评论中指出的那样,在url栏中复制/粘贴时,某些浏览器会删除javascript:
part。 我经过testing,IE10就是这种情况。
如果您在Chrome中加载文档, Developer|Elements
视图将显示您的JS代码弄乱的HTML。 这不是直接的HTML文本,你必须打开(展开)任何感兴趣的元素,但你有效地检查生成的HTML。
在Web开发工具栏中,您是否尝试了Tools -> Validate HTML
或Tools -> Validate Local HTML
选项?
Validate HTML
选项将URL发送到validation器,这对于面向公众的站点来说效果很好。 Validate Local HTML
选项将当前页面的HTML发送到validation器,该validation器适用于login后的页面,或者不能公开访问的页面。
您可能还想尝试查看源图表 (也作为FireFox附加组件 )。 有一个有趣的说明:
问:为什么查看源图表将我的XHTML标签更改为HTML标签?
答:没有。 浏览器正在进行这些更改,VSC仅显示浏览器使用您的代码所做的事情。 最常见的是:自我closures的标签会丢失结束斜线(/)。 有关更多信息,请参阅Rendered Source上的这篇文章 (archive.org) 。
使用Firefox Web Developer工具栏( https://addons.mozilla.org/en-US/firefox/addon/60 )
只需转到查看源代码 – >查看生成的源代码
我一直用它来完成同样的事情。
我有同样的问题,我发现这里有一个解决scheme:
http://ubuntuincident.wordpress.com/2011/04/15/scraping-ajax-web-pages/
所以,要使用Crowbar,从这里的工具:
http://simile.mit.edu/wiki/Crowbar(now(2015-12)404s )
wayback机器链接:
http://web.archive.org/web/20140421160451/http://simile.mit.edu/wiki/Crowbar
它给了我错误的,无效的HTML。
这是一个古老的问题,这是一个旧的答案, 一直以来对我来说已经工作了很多年 ,但是现在已经不存在了,至less不是2016年1月。
来自SquareFree的“Generated Source”小书签完全符合你的要求,而且与@ Johnny5中的其他优秀“老式黄金”不同,它显示为源代码(而不是由浏览器正常渲染,至less在Google Mac上的Chrome):
https://www.squarefree.com/bookmarklets/webdevel.html#generated_source
不幸的是,它的行为就像@ Johnny5中的“黄金”:它不再作为源代码显示出来。 抱歉。
警报(document.documentElement.outerHTML);
为什么不input这个是urlbar?
javascript:alert(document.body.innerHTML)
在Firefox中,只需按Ctrl-a(select屏幕上的所有内容),然后右键单击“查看select源”。 这捕获了JavaScript对DOM所做的任何更改。
我觉得IE开发工具(F12)有; 查看>源代码> DOM(Page)
您需要复制并粘贴DOM并将其保存以发送给validation器。
在元素选项卡中,右键单击html节点>复制>复制元素 – 然后粘贴到编辑器中。
如上所述,一旦源被转换成DOM树,浏览器中不再存在原始源。 您所做的任何更改都是针对DOM,而不是源。
但是,您可以将修改的DOMparsing回HTML,让您看到“生成的源”。
- 在Chrome中,打开开发者工具,然后点击元素标签。
- 右键单击HTML元素。
- select复制>复制元素。
- 粘贴到编辑器中。
您现在可以将当前DOM看作HTML页面。
这不是完整的DOM
请注意,DOM不能完全由HTML文档表示。 这是因为DOM具有比HTML具有更多属性。 但是,这将做一个合理的工作。
只有我发现的是Safari的BetterSource扩展,这将显示您操作的文档的唯一缺点是没有什么远程像Firefox
下面的JavaScript代码片段将为您提供完整的ajax呈现的HTML生成的源代码。 独立浏览器。 请享用 :)
function outerHTML(node){ // if IE, Chrome take the internal method otherwise build one as lower versions of firefox //does not support element.outerHTML property return node.outerHTML || ( function(n){ var div = document.createElement('div'), h; div.appendChild( n.cloneNode(true) ); h = div.innerHTML; div = null; return h; })(node); } var outerhtml = outerHTML(document.getElementsByTagName('html')[0]); var node = document.doctype; var doctypestring=""; if(node) { // IE8 and below does not have document.doctype and you will get null if you access it. doctypestring = "<!DOCTYPE " + node.name + (node.publicId ? ' PUBLIC "' + node.publicId + '"' : '') + (!node.publicId && node.systemId ? ' SYSTEM' : '') + (node.systemId ? ' "' + node.systemId + '"' : '') + '>'; } else { // for IE8 and below you can access doctype like this doctypestring = document.all[0].text; } doctypestring +outerhtml ;