有没有办法使用 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/