Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在IE中提供静态图像会导致怪癖模式_Php_Internet Explorer_Http Headers_Quirks Mode - Fatal编程技术网

Php 在IE中提供静态图像会导致怪癖模式

Php 在IE中提供静态图像会导致怪癖模式,php,internet-explorer,http-headers,quirks-mode,Php,Internet Explorer,Http Headers,Quirks Mode,按照上面提到的方法,我可以成功地提供png、gif或任何我想要的图像,但由于我对页面的没有任何控制权(据我所知),IE9(可能还有其他人)决定默认的“文档模式”是“怪癖” IE成功地显示了图像(只是文档边缘的一个轻微阴影提供了任何问题的线索),因此,也许我应该心满意足,忽略以这种方式创建的页面的可怕怪癖模式状态 我的方法与上述答案中的方法类似: # Other processing that is not output / echoed # <-- Can something else b

按照上面提到的方法,我可以成功地提供png、gif或任何我想要的图像,但由于我对页面的
没有任何控制权(据我所知),IE9(可能还有其他人)决定默认的“文档模式”是“怪癖”

IE成功地显示了图像(只是文档边缘的一个轻微阴影提供了任何问题的线索),因此,也许我应该心满意足,忽略以这种方式创建的页面的可怕怪癖模式状态

我的方法与上述答案中的方法类似:

# Other processing that is not output / echoed
# <-- Can something else be sent here to calm IE down?
header('Content-Type: image/png');
readfile($imagePath);
#未输出/回显的其他处理

#使用包含doctype的标题模板:

<?php
echo <<<HEADER
<!doctype html>
  <html>
     <body>

HEADER;
?>

以及结束文件的页脚模板:

<?php
echo <<<FOOTER
  </body>
</html>
FOOTER;
?>

在主文件中,包括以下内容以及现有内容:

<?php
include('header.php')
include('content.php')
include('footer.php')
?>

使用输出缓冲在内部缓存输出字符串,并一次性将其发送给用户。在长时间运行的脚本中,还需要定期刷新输出缓冲区,以便将一些反馈发送到HTTP客户端。这可以通过ob_end_flush()完成。此函数还关闭输出缓冲,因此您可能希望在刷新后立即再次调用ob_start()

链接头很有用,但只在Firefox中有用:


为什么您不能控制DocType?在doctype之前是否向浏览器发送任何内容(如echo或其他内容)?普特凡德不喜欢这样,于是跳入怪癖的状态;谢谢你的想法。我试着在两个调用(
header
readfile
)周围回显doctype,但这破坏了浏览器所期望的--直接的图像数据。doc类型在html中。。。不在图像中。。。该图像没有一个doctype@Orangepill; 谢谢,但我不想在图像中插入doctype信息。在我看来,当你试图直接向浏览器提供一个图像时,你再也不能控制html了。你能成功地执行
标题('Content-Type:image/png')吗;readfile($imagePath)执行标头后是否包含?我不敢相信这是可能的。看起来您没有回避我发布的问题——发送标题
内容类型
与回显或打印
冲突。如果可以,一定要发布你的工作解决方案。这不是一个难题,也不是一个原创的解决方案。如果需要在文档头之后执行头,只需使用输出缓冲区。在野外有很多例子,我输出图像并不困难——只是在仅加载图像时将IE置于怪癖模式之外。我还启用了输出缓冲,但没有用于发送doctype(实际上是HTML)的“头”。但是,如果在输出图像之后或之前尝试输出doctype,则会抛出错误。这有意义吗?与此类似(在IE中,默认情况下它将处于怪癖模式):
<?php
include('header.php')
include('content.php')
include('footer.php')
?>