我很生气,以下问题在任何其他浏览器(Chrome,Firefox)上都没有发生:
这是我的javascript代码:
<script type="text/javascript">
var ctr = 0;
function getImage(url)
{
var img = document.createElement("img");
img.src = url + "&nc=" + ctr;
ctr ++;
img.width = 128;
img.height = 128;
document.body.appendChild(img);
}
for (var i = 0; i < 10; i=i+1)
{
//THIS FAILS MOST OF THE TIME
setTimeout("getImage('http://myHostName:9980/GenerateImageStatic?parameter=1')", 1000);
//THIS WORKS! WHY?
//setTimeout("getImage('http://maps.google.com:80/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=14&size=512x512&maptype=roadmap&markers=color:blue|label:S|40.702147,-74.015794&markers=color:green|label:G|40.711614,-74.012318&markers=color:red|color:red|label:C|40.718217,-73.998284&sensor=false')", 1000);
}
</script>
对于HTTP Server我正在使用BOOST示例ASIO HTTP Server Link我修改了它以便对任何URI请求,它发送一个png文件(我已经尝试了各种文件以确保它不是PNG编码那么糟糕)。 HTTP标头具有Content-type:“image / png”。所以发送了正确的mime类型。
我一直试图找到解决方案很长一段时间。阅读各种帖子:
有什么想法吗? 感谢。
修改 我将myHostName添加到可信站点。我还将内部和互联网站点的安全设置降低到了低。如果启用,我将尝试在服务器上禁用keepalive。但是正如我所提到的,我没有看到IE尝试获取图像。套接字没有收到来自IE的任何请求,因此从头文件中删除keep-alive可能没有帮助。
答案 0 :(得分:12)
检查图像的颜色模式。
我偶然在Photoshop中将图像的颜色模式从RGB8切换到CMYK,并遇到了同样的问题。 IE8无法显示图像,而Firefox根本没有问题。
答案 1 :(得分:1)
我相信在IE中你需要在将元素附加到DOM后设置源,否则它将无法正确呈现。
答案 2 :(得分:1)
这听起来像是服务器的问题。要尝试的一些事情,以缩小问题范围:
查看它是否静态运行。这是一个包含这些图像的平面html页面。他们出现了吗?
尝试更改它,以便您的计时器执行一个循环的单个函数,而不是循环调用计时器。
让它做一个document.write(在页面加载时,没有任何计时器),只需为元素编写html(以及url,这样你就可以看到它在做什么)
让它做,而不是使用计时器,以响应单击页面上的按钮。让它一次做一个图像。
我认为如果你尝试所有这些事情,你可能会遇到问题,但如果没有,请报告发生的事情。
答案 3 :(得分:1)
我在IE8中没有显示的图像存在同样的问题,但在其他浏览器中也没问题。本地保存的文件甚至就是这种情况。如果我用IE8打开,我会得到红色x,但是其他所有程序都显示正常。我查看了图像的属性,它们起源于Photoshop,所以我猜测它是如上所述的CMYK问题。如果我使用RGB项目保存此图像,问题就解决了。
答案 4 :(得分:0)
是的,我仍然不知道问题是什么。 人们一直在暗示它是CMYK。如果该解决方案适合您,那很好。我一直在使用libPNG进行编码和RGB。 CMYK对我来说不是问题。
我使用Boost / asio http服务器示例#3实现了HTTP服务器。以及Java Servlet。同样的问题。有时它有效,有时它不会
我放弃了。