2011-12-29 80 views
1

例如,在下面的HTML ...如何找出浏览器选择忽略的无效HTML?

<form name="outerform"> 
    <input type="text" name="outer1"/> 
    <input type="text" name="outer2"/> 

    <div> 
    <form name="innerform" method="post" action="#"> 
     <input type="text" name="inner1"/> 
    </form> 
    </div> 
</form> 

Firefox会简单地扔掉innerform<form>标签,因为形式不能嵌套。

我在修补一些遗留代码时遇到了这个问题。有人放置了几乎覆盖整个body内容的<form>标签。当我添加了我自己的,更加本地化的<form>时,Firefox删除了内部标记,并且我的提交将转到外部表单。因为我正在做一些jQuery处理来创建我的提交网址,所以我认为这是我的错误。在Firebug的HTML选项卡中查看呈现的HTML后,我意识到了这个问题。

如果浏览器或Firebug有一个“被忽略的HTML”标签,或者一些这样的方法,我会立即挑选出来。我不能简单地做一个查看源代码,并将其粘贴到W3C的基于Web的验证服务,原因如下:

  1. 出于安全考虑,在开发计算机我在没有连接到公共互联网。
  2. Firebug的HTML选项卡显示呈现的HTML,因此无效的HTML标记已被删除。

最后,编辑器(Eclipse)通常是我找到像这样的错误的地方。但是我们使用了很多包含的文件和Tiles框架,因此您一次只能看到最终HTML页面的一个片段。

+1

Firefox的view-source不显示呈现的HTML;如果我把你的测试用例这样的东西显示'

'标签... – 2011-12-29 22:52:55

+0

谢谢,我纠正了这个问题。我的意思是Firebug的HTML选项卡,而不是视图源。 – 2012-01-05 14:38:35

回答

1

我找到了我的解决方案。感谢Boris Zbarsky对我指引正确方向的评论。 view-source显示下载的HTML,但Firebug DOM检查器显示呈现的HTML(我在问题中误解了这两个HTML)。解决方案:

  1. 做一个查看源代码,并保存文件(文件1)
  2. 打开Firebug的DOM Inspector,右键单击顶级元素<html>,复制HTML,并保存到文件(文件2)
  3. 使用diff工具比较这两个文件。在图形比较工具中,文件2将显示浏览器忽略/移除HTML的空白。

重新格式化这两个文件中的HTML可能会使差异更容易。

0

如果它无效,则无法知道浏览器将如何反应;因此在an HTML Validator中列出的任何被破坏的应该可能是固定的。

您可以离线验证HTML;例如,我使用的plugin for Coda可以脱机验证HTML。

0

如果您有wget工具,那么获取服务器生成的HTML的精确副本是非常实用的。即使查看源代码功能并不总是告诉你到底下载了什么(也许是现在,但是当服务器没有正确执行时,我花了几个小时看着“有效”的代码。)

你可以得到wget来自SourceForge.net上的mingw工具的MS-Windows。在Linux下,它可能已经安装,如果不是在你的仓库中搜索它。