Javascript从怪癖模式切换到标准模式
Javascript switch from quirksmode to standard
是否有一种方法可以使用Javascript将quirkmode中的页面切换到标准模式?
例如,假设我有以下包含html的页面。我试过以下方法。
<html><script src="js.js"></script></html>
和js.js
中的以下内容document.open();
document.write('<!doctype html><html></html>');
document.close();
从上面的输出来看,我基本上是在尝试将quirkmode的页面转换为标准模式,但它不起作用。(在iframe上设置类似的页面内容就可以了)
iframe作品
它工作你做document.createElement('iframe')
追加到文档中,并调用iframe.contentWindow.document.write('<!doctype html>..');
对它。不幸的是,如果我在当前页面上调用它,同样的技术就不适用了。
有没有人有一个工作的修复切换页面在怪癖模式到标准模式?
编辑:创建和附加iframe,并简单地将其高度和宽度设置为100%,工作,但不是这里的目标;)
浏览器通常在加载时查找文档类型,以确定是否使用"标准模式",并根据该决定加载/呈现页面。即使您设法通过脚本插入doctype声明,它也不会及时出现。
它在iframe中工作的原因是内容是一个新文档,当您编写它时正在"加载"。由于doctype已经存在,所以该内容将以标准模式呈现。
正如在同一主题的另一个问题中提到的,您可能能够重写整个文档。基本上,(如果页面仍然处于怪癖模式,)获得document.documentElement.innerHTML
,然后用适当的文档类型编写一个新文档,并从原始文档中添加HTML。但它会导致脚本等一系列问题,应该避免。理想的解决方案是修复HTML,使其包含doctype,而不是用脚本来敷衍它。
<script>
document.open();
document.write('<!doctype html><html></html>');
document.close();
</script>
或任何变体都不能工作,因为<SCRIPT>
标记导致HTML解析器创建一个HTML元素和一个HEAD元素(如果不存在的话)。当HTML元素存在时(即使是隐式元素),标记流上的DOCTYPE将被忽略。
关闭和重新打开文档只会阻止解析以下任何HTML内容。
使用document.write
输出DOCTYPE的唯一方法是创建一个新的空白文档,您可以在其中写入。
解决这个服务器端
您可以尝试编写一个x - ua兼容的元标记:
<meta http-equiv="X-UA-Compatible" content="IE=9" />
- 获取非标准模式中的子字符串
- 如何使用 JavaScript 或 PHP 将 IE 11 企业模式设置为标准模式
- 应为']'在IE 8文档模式的正则表达式中:IE 8标准
- 如何在 Javascript 中将 ckeditor 模式从内联模式更改为标准模式
- 当标准投诉模式未打开时,表行/TR的offsetHeight在IE11中似乎给出了不同的值.这是IE11中的错误吗
- IE7标准文档模式中SPAN/DIV高度不正确
- jQuery触发PhotoSwipe独占模式从标准的CSS/HTML
- 启动模式标准打开
- $(this)是否需要与“标准”一起使用?jQuery的插件模式
- IE改变怪癖模式为标准模式的javascript
- 插入文档的动态iframe为标准模式,默认为怪僻模式
- 从表中的单个字段中找到不同的正则表达式模式的良好标准实践是什么?
- 不工作在IE9标准,但在其他模式下工作
- 是否有任何方法可以禁用(或)删除自定义记录的视图模式上的Netsuite标准编辑按钮
- 是否有一个标准的方法来指定一个node.js应用程序是在生产模式(或开发模式)
- 文档.querySelector对于标准模式iframe在quirks模式父模式下运行是未定义的
- Javascript从怪癖模式切换到标准模式
- 即使在设置了标头之后,IE9也不会在标准模式下打开
- 仅在IE9标准模式下asp.net javascript内存泄漏
- IE9标准模式变更列表