Firefox等居然不报404错误?!
在做Flash加载图片的时候, 由于图片可能不存在或图片地址无效等情况, 如果不做处理, 这无疑会是一个糟糕的用户体验!
你想到的解决方法可能是在服务器端做转向, 图片不存在时转向到一个默认图片, 如:
ErrorDocument 404 http://xxx.com/no_photo.gif
思路没错, 不过你试一下可能就会吃闭门羹(我以前就吃过,呵呵), flash似乎根本不理会你的转向, 后来找到解决方法如下:
第一步, 做404转向到一个中转页面, 如ErrorDocument 404 /404.php;
第二步, 在/404.php里先发送一个 状态为200 的头, 然后用php读取图片:
———————代码开始———————–
<?php
header(“HTTP/1.0 200 OK”);
readfile(“no_photo.gif”);
?>
———————代码结束———————–
以上代码是以前写的, 未知记忆是否有误, 读者见谅!
进入正题, 其实我今天想说的是另一种解决方案: 在flash客户端实现.
因为Flash可以侦听很多加载事件,包括HttpStatus. 我开始是做HTTPStatusEvent的侦听, 即加载出现404状态时,说明目标图片不存在, 这时我就指定flash去重新加载一个默认的图片. 没想到浪费了我大半晚上的时间, firefox下它硬是不出效果. 后来测试发现: 出IE外, FF, Opera, Chrome都没效果.
再后来测试, 发现侦听 IOErrorEvent 事件就好了, 各个浏览器下都正常. 估计IO_Error事件在404之前, 不过我还是没搞明白, 那个HTTPStatusEvent到底怎么回事?
对于默认图片的这个问题, 相信每个网站都会有遇到, 或许你有更好的解决方案, 欢迎跟帖,不吝赐教!