0

我创建了一个使用 JavaScript 动态创建并使用<script>标签添加到另一个网站的表单。

这个其他网站使用的 doctype 是<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">使用 quirks 模式的。

我已经考虑到这一点来构建我的表单,并且在 Chrome、Firefox 和 IE 10 中一切都按预期工作。但是,当我在 IE 9 和更早版本中测试它时,根本不显示表单。当我打开开发者工具时,我可以看到 IE 10 使用新的 quirks 模式,但 IE 9 及更早版本使用 IE5 Quirks 模式。

我想知道在使用 IE 9 及更早版本时是否可以使用新的 quirks 模式来显示此页面。如果这是不可能的,我想强制标准模式,但仅在使用 IE 9 或更早版本并继续对其他所有浏览器使用怪癖时。

我不能使用 html5 文档类型,因为他们的网站是用怪癖模式而不是标准构建的,而且当我使用这种文档类型时,他们的设计都被破坏了。

4

1 回答 1

2

页面加载后,您无法更改模式。而且您不能以编程方式更改它。强制页面进入怪异模式的唯一方法是在没有有效文档类型或 HTML 中有严重错误的情况下加载它。

如果你有一个 doctype,但你的页面仍然以 quirks 模式加载,那么这意味着你的 HTML 中有严重的错误。这会给你带来比仅仅处于怪癖模式更大的问题。您绝对应该修复这些错误。如果你真的想进入 quirks 模式,请放弃 doctype,但你真的应该尽量不要使用糟糕的 HTML 代码,即使使用 doctype 也会触发 quirks 模式!

您可以使用W3C 验证器来验证您的 HTML 以发现这些错误。

关于在运行时在 IE10 的两种不同的怪癖模式之间切换页面,简单的答案是您不能这样做。

对于那个很抱歉。

但是,老实说,这可能是最好的。无论如何,使用怪癖模式是一场彻底的灾难。它不只是改变布局模式;它还关闭了浏览器的大部分功能(即几乎所有自 1998 年以来发明的东西)。

但现在好消息是:

幸运的是,从 Quirks 模式切换出来比您想象的要容易得多。

主要布局问题(不同的盒子模型)可以通过在 CSS 顶部添加以下内容来解决:

*{box-sizing:border-box;}

这是将盒子模型设置为 quirks-mode 样式布局的符合标准的方法。从怪癖模式切换到标准模式导致的大多数布局问题都可以通过这种简单的 CSS 样式解决。

还有其他怪癖,但它们相对较小,一旦您解决了主要问题,应该不会太难处理。其中很多实际上不是怪癖模式问题,而是原始编码器可能不得不破解的旧 IE 版本中的错误。无论如何,即使您坚持使用怪癖模式,也不能保证这些在未来的版本中会继续以相同的方式工作,所以无论如何您最好现在就修复它们。

所以,总结一下:

  1. 修复您的页面,使其以标准模式加载。有效的文档类型和有效的 HTML。
  2. 用于box-sizing缓解由开关引起的主要布局问题。
  3. 手动修复剩余的布局问题。

这确实比听起来要少得多。诚实。

于 2013-08-19T14:29:58.677 回答