Javascript 从怪异模式切换到标准模式

标签 javascript quirks-mode

有没有办法使用 Javascript 将怪异模式下的页面切换到标准模式?

例如,假设我有以下包含 html 的页面。我已经尝试过以下方法。

<html><script src="js.js"></script></html>

以及js.js中的以下内容

document.open();
document.write('<!doctype html><html></html>');
document.close();

从上面的输出来看,我基本上试图将怪异模式下的页面转换为标准模式,但它不起作用。 (在 iframe 上设置像上面这样的页面内容效果很好)

iframe 工作

你做的有效document.createElement('iframe')追加到文档中并调用 iframe.contentWindow.document.write('<!doctype html>..');在上面。不幸的是,如果我在当前页面上调用同样的技术,则不会。

是否有人有可行的解决方案,可以将怪异模式下的页面切换到标准模式?

编辑:创建并附加 iframe 并简单地将其高度和宽度设置为 100%,可以工作,但不是此处的目标;)

最佳答案

浏览器通常在加载时查找文档类型来确定是否使用“标准模式”,并根据该决定加载/呈现页面。即使您设法通过脚本插入文档类型声明,它也不会及时出现。

它在 iframe 中工作的原因是内容是一个新文档,在您编写它时正在“加载”。由于文档类型存在,该内容以标准模式呈现。

another question on this same topic 中所述,您也许能够重写整个文档。基本上,(如果页面仍处于怪异模式)获取 document.documentElement.innerHTML,然后使用正确的 doctype 编写一个新文档,并附加原始文档中的 HTML。但它会导致一系列脚本等问题,应该避免。理想的解决方案是修复 HTML 以包含文档类型,而不是用脚本来捏造它。

关于Javascript 从怪异模式切换到标准模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7047158/

相关文章:

javascript - 在 JavaScript 的类中,push 和 concat 的工作方式有何不同

javascript - 为 Javascript 强制执行编码风格的工具

javascript - 响应式d3刷牙

internet-explorer - iframe 会在 quirks 模式下呈现吗?

internet-explorer - IE quirksmode中绝对定位DIV的宽度

html - 有没有一种方法可以判断 IE7 是在标准模式还是 Quirks 模式下呈现页面

javascript - 使用 JQuery 对 Javascript 进行 JSLint 验证

javascript - Javascript 如何导致 IE 8 在兼容性 View 中重新加载页面?

javascript - 根据在 Javascript 中单击的链接选择单选输入