2012-03-09 43 views
5

Firefox在呈现错误的HTML时具有一定的容差。这意味着即使关闭标签被忽略,HTML也会显示为好像一切正​​常。当使用JavaScript来操作或添加当前页面中的内容时,这种宽容方面特别相关。在呈现HTML时禁用Firefox中的公差(或启用严格性)

由于我使用Firefox作为我的主要测试/开发浏览器,因此受到这种行为的困扰不止一次,其后果是“更严格”浏览器功能的丧失。例如,Microsoft Internet Explorer中的相同代码由于添加的内容上提到的缺失标记而未能产生任何可见的输出。

现在的问题是,有没有什么方法可以告诉Firefox对接受的HTML更加严格,并且失败而不是为其“猜测修复”(特别是当通过JavaScript添加HTML时)? PS:我试过玩DOCTYPE,但结果是一样的。

+1

我想firefox是严格只适用于XTHML(具有正确的文档类型) – Aprillion 2012-03-09 20:11:05

+0

你可以显示一个文件的例子,通过Firefox呈现确定,但在IE中打破(不显示任何内容)?我的经验是,在所有主流浏览器中处理缺失的结束标记等错误的方式都不尽相同。当然,不同的浏览器处理错误的方式不同,但通常不会太糟糕。 – 2012-03-09 21:01:27

+0

@MrLister将在其上工作并更新问题 – Unode 2012-03-09 21:22:50

回答

1

所有的解析器在某种程度上都是宽容的。大多数主流网站都有错误(不是说这使得它易于使用,只是说)。如果您使用附加的调试器进行开发,则会更快地捕获脚本错误。我还通过在构建过程中使用缩小器来捕获脚本错误(在主要的语法问题上这会失败)。我使用Visual Studio 2010的实时警告(并非总是完美)来验证我的HTML标记,并定期使用w3验证器服务。

对于浏览器的选择,我通常全面开发;在一次会议中,我可以在IE7/8/9模式,Chrome和Firefox之间进行切换。如果上述浏览器被覆盖,Safari和Opera通常会工作。这样我就不会在错误的道路上走得太远。

顺便说一句,DOCTYPE是重要的(即使它似乎并不总是这样)。

+0

你如何验证用JavaScript组装的HTML?它不存在执行之前... – Unode 2012-03-09 20:37:24

+0

@Unode - 好问题。我主要依赖框架(如jQuery)来创建格式良好的标记(尽管它仍然可能无效,例如非法嵌套标记)。如果我产生了大量的标记,我可能会在浏览器格式化/重做之前将它原始转储到控制台窗口。然后,我会视觉检查它或将其粘贴到验证程序中。现在你提到它了,有一个更优雅的方式来做到这一点会很好。 – 2012-03-09 21:01:02

+0

@Unode在Firefox中全选,右键单击+“显示选择源”会显示生成的内容! – 2012-03-09 21:03:04

1

我发现最好只是分解并在IE中完成主要工作。

如果你使用一个很好的文档类型(<!DOCTYPE HTML >),并设置X-UA-Compatible标头到IE8模式,你必须做的,使一个应用程序工作的额外工作/看在其他浏览器好是最小。

+0

由于Windows不是开发环境,主要使用IE是一个困难的解决方案。我对x-ua兼容的头文件不熟悉,看起来像黑魔法:) – Unode 2012-03-09 23:57:33

2

请勿使用浏览器检查您的HTML;他们非常不会这样做。使用一个实际的验证器,如the W3C's validator。有appear to be许多Firefox扩展可以通过点击或自动验证页面,虽然我不熟悉它们,因为我没有使用Firefox作为我的主要浏览器。

+0

甚至Notepad ++也有插件,例如TextFX>'TextFX HTML Tidy' – Aprillion 2012-03-09 20:20:09

+0

HTML VALIDATOR http://users.skynet.be/mgueury/mozilla/是一个很好的验证程序 – Variant 2012-03-09 20:20:21

+0

问题是,如果用JavaScript处理HTML,“源代码”不再是平面文件,而不是浏览器中DOM的一部分。在这种情况下,宽容已经发生,任何浏览器内验证都无法识别后JavaScript错误。我使用了所提到的扩展@Variant,它有一个“JavaScript处理后验证”,但它只能找到一些在某些条件下发现不足的错误。 – Unode 2012-03-09 20:35:41