2

如果我使用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 模式并返回到 Standard 模式,这似乎破坏了我在页面上的代码。

用户从 test.php 开始,单击验证码上的提交,将其 POST 到 verify.php -<?php if (condition){ change some session variables; header(etc); exit();} ?>开头是正确的。

4

2 回答 2

0

使用 php 来回显元刷新重定向而不是 php 标头似乎已经解决了这个问题。所有代码都有效,不会进入 quirks 模式并返回 IE9 模式,并且 meta 不会被忽略。

附加信息

我亲自与软件/网络程序员交谈,他不知道为什么会发生此错误。但是,他的观点是,如果 meta refresh 代替 php headers 起作用,那么使用它就没有问题。

于 2013-01-08T18:19:50.153 回答
0

我想了更多,并有一个想法:

对于任何不以<!DOCTYPE>.

重定向之后仍然可以有进一步的header(...)输出,这将被视为一个页面。

所以......如果在发送之后有任何输出header(),并且该输出不是以有效的开头<!DOCTYPE>,IE9 可能会跳转到怪癖模式。

在 PHP 中,如果代码在header()调用后继续运行,并且后续代码中的某些内容会产生某种输出,则可能会发生这种情况。

如果这是正在发生的事情,并且您不需要代码在重定向后继续运行(这将是不寻常的),那么在应该修复它die();之后立即添加一个调用。header()

希望有帮助。

于 2013-01-11T13:43:30.410 回答