有没有办法使用 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>..');
在上面。不幸的是,如果我在当前页面上调用它,则相同的技术不会出现。
有没有人有一个可行的解决方案,可以将怪异模式下的页面切换到标准模式?
EDIT:创建并附加一个 iframe 并简单地将其高度和宽度设置为 100%,可以工作,但不是这里的目标;)
浏览器通常会查找文档类型在加载时确定是否使用“标准模式”,并根据该决定加载/呈现页面。即使您设法通过脚本插入文档类型声明,它也不会及时出现。
它在 iframe 中工作的原因是内容是一个新文档,在您编写它时正在“加载”。由于文档类型存在,该内容以标准模式呈现。
正如中提到的关于同一主题的另一个问题 https://stackoverflow.com/questions/4493845/need-help-with-jquery-prepend-doctype-to-html, you might能够侥幸重写整个文档。基本上,(如果页面仍处于怪异模式)document.documentElement.innerHTML
,然后使用正确的文档类型编写一个新文档,并附加原始文档中的 HTML。但它会导致一系列脚本等问题,应该避免。理想的解决方案是修复 HTML 以包含文档类型,而不是用脚本来捏造它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)