img标签的src或a标签的href不要留空!

类别: 前端开发 — 标签: , , , — honk @ 2009-06-12 10:49:19

原版的phpbb中,给每个版块设置链接图片的时候,只能手动输入图片地址,客户觉得不太方便,
另外客户要求增加一个可以分别给每个版块上传不同logo图片的功能。
所以我们打算在phpbb后台增加一个通用的上传页面,在任何需要输入图片url的文本框后加一个upload的链接,点链接弹出上传页面,上传成功返回url给原页面并自动关闭弹窗,js更新文本框和预览图。

做好后,发现一个很奇怪的问题:


IE下,每次上传成功后,点提交按钮,却提示没有权限自动登出了。
而其他浏览器下都是正常的,多么诡异的问题!

我们开始都觉得这种引起session丢失的问题应该是后端代码的问题,一行一行代码的调试,每次都要登入登出,同事输密码都输到手抽筋了。

折腾了一下午,最后锁定问题在那个预览图的img标签。
因为以前没有设置链接图片的版块或新版块,取不到图片地址,img标签的src属性就被置空了。
按理说这样也不至于引起session的丢失啊?!

经过几次测试发现,<img src="" />,当src属性为空时,IE和其他浏览器的表现不一致:
IE会自动请求一个’./’这样的当前目录url,而其他浏览器(FF,OP,CH,SF)都会请求当前页面的url。

phpbb的后台登录后会一直在url中传递一个session值做验证,如果session值不正确就会自动登出。
所以出现了前面的问题。

今天同事搜到另一网友也遇到类似诡异问题,而且好像时间也在昨天,很巧的!

另外提一下:
<a href="">标签的href属性为空时,不同浏览器的表现也和src类似。
而<form action="">标签的action属性为空时,各浏览器(包括IE)表现几乎一致,都会提交到当前url

以后写html时要细心些。

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Powered By WordPress and soIdo