如果我使用header( 'Location: http://www.example.com/test.php' );
将用户发送到test.php
。我在IE9控制台中注意到了这一点:
HTML1113: Document mode restart from Quirks to IE9 Standards
test.php
HTML1115: X-UA-Compatible META tag ('IE=9') ignored because document mode is already finalized.
test.php
这使test.php
上的代码完全陷入困境。
问题
我已经在使用<!DOCTYPE html><html><head><meta http-equiv="X-UA-Compatible" content="IE=9">
,但我猜测使用PHP header()来重定向会导致问题。
使用PHP header()重定向用户时,有没有办法阻止IE9进入怪癖模式?
其他信息
它进入Quirks模式并返回标准模式,这似乎打破了我在页面上的代码。
用户在test.php中启动,点击验证码上的提交,POST验证.php - 开头就有<?php if (condition){ change some session variables; header(etc); exit();} ?>
。
答案 0 :(得分:0)
使用php来回显元刷新重定向而不是php标题似乎已经修复了问题。所有的代码都可以工作,没有怪异的模式可以回到IE9模式,而且不会忽略元。
其他信息
我亲自与一位软件/网络程序员交谈,他不知道为什么会出现这个错误。但是,他的观点是,如果元刷新而不是php标题,那么使用它就没有问题了。
答案 1 :(得分:0)
我正在考虑这个问题,并有一个想法:
对于任何不以<!DOCTYPE>
开头的页面,IE9将跳入怪癖模式。
header(...)
重定向后面仍然可以进一步输出,这将被视为一个页面。
所以...如果在发送header()
之后有任何输出,并且该输出没有以有效<!DOCTYPE>
开头,IE9可能会跳转到怪癖模式。
在PHP中,如果代码在header()
调用之后继续运行,则会发生这种情况,后续代码中的某些内容会产生某种类型的输出。
如果发生了这种情况,并且您不需要代码在重定向后继续运行(这可能是不寻常的),那么在die();
之后立即添加对header()
的调用它
希望有所帮助。