Javascript从quirksmode转换为standard
作者:互联网
有没有办法使用Javascript将页面从quirksmode切换到标准模式?
例如,假设我在下面的页面中有html.我已经尝试了以下方法.
<html><script src="js.js"></script></html>
以及js.js中的以下内容
document.open();
document.write('<!doctype html><html></html>');
document.close();
通过查看上面的输出,我基本上是在尝试将quirksmode中的页面转换为标准模式,但是它不起作用. (在iframe上像上面一样设置页面的内容效果很好)
iframe Works
它的工作原理是将document.createElement(‘iframe’)追加到文档中并调用iframe.contentWindow.document.write(‘<!doctype html> ..));在上面.不幸的是,如果我在当前页面上调用相同的技术,则不会.
有没有人能正常工作的将页面从quirksmode切换到标准模式?
编辑:创建并附加一个iframe并简单地将其高度和宽度设置为100%,是可行的,但这不是目标;)
解决方法:
浏览器通常在加载时查找doctype,以确定是否使用“标准模式”,然后根据该决定加载/渲染页面.即使您设法通过脚本插入doctype声明,它也不会及时出现.
它在iframe中起作用的原因是该内容是一个新文档,在您编写该文档时正在“加载”该文档.由于存在doctype,因此该内容以标准模式呈现.
如another question on this same topic中所述,您也许可以摆脱重写整个文档的麻烦.基本上,(如果页面仍处于怪癖模式下)获取document.documentElement.innerHTML,然后编写具有适当doctype的新文档,并从原始文档中追加HTML.但这会导致脚本等问题,因此应避免使用.理想的解决方案是将HTML修复为包含doctype,而不是使用脚本对其进行篡改.
标签:javascript,quirks-mode 来源: https://codeday.me/bug/20191009/1883112.html