最近一直在asp.net mvc下开发网站,今天碰到了很让人郁闷的问题。 我一个Controller里的 action在页面加载时被调用了2次。
起初怀疑JS问题,但屏蔽调JS后,问题依旧。没办法,把页面里的内容分别屏蔽的找了半天原 因,最终发现是因为 页面含有一个<img src="">。
<html>
<body>
...其他服务器端代码...
<img src="" />
...其他服务器端代码...
</body>
</html>
当调用这个页面的URL 的时候,会发现,网页被调用了2次。如果该访问该网页的URL 还带有参数,那么第一次调用有参数,第二次调用没有参数。
Google了下,发现具体原因是,在img 对象的src 属性是空字符串("")的时候,浏览器认为这是一个缺省值,值的内容为当前网页的路径。浏览器会用当前路径进行再一次载入,并把其内容作为图像的二进制内 容并试图显示。
对于不同的浏览器测试后,发现对于有无src 或者src 是否为空的情况,还不尽相同,测试结果如下表。
代码 | Firefox | IE6 | IE7 |
<img src="" /> | 会重复载入 | 会重复载入 | 会重复载入 |
<img src /> | 会重复载入 | 正常 | 正常 |
<img /> | 正常 | 正常 | 正常 |
以后如果图片路径后来才赋值的,一定注意这个问题,不要加上src=""。