img标签的src=""会引起的Page_Load多次执行

今天看见园子里有人因img的src为空导致session丢失,详情见http://www.cnblogs.com/kyneblog/archive/2009/06/11/1500999.html

以前一直没注意这个,所以晚上特地写了一段代码验证:

Default.aspx后台代码:

using System;
using System.Web;
using System.IO;

namespace src
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            WriteLog();
        }

        public static void WriteLog()
        {
            string _logFile = HttpContext.Current.Server.MapPath("log/log.txt");

            using (StreamWriter sw = new StreamWriter(_logFile, true))
            {
                string s = string.Format("{0} {1}", HttpContext.Current.Request.Url.AbsoluteUri.ToString(), DateTime.Now.ToString());
                sw.WriteLine(s);
                sw.Close();
            }
        }
    }
}

代码很简单,页面每次打开,都会在log/log.txt中追加一行记录,内容为“当前页的绝对网址+当前时间”

前端测试代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="src._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>
<body>   
    <img alt="test" src="" />   
</body>
</html>

F5运行,发现log.txt确实有二行记录(在IE,FF,Chrome下都是同样的结果)

如果把<img alt="test" src="" />   改成二个连续的img,即:
<img alt="test" src="" />  
<img alt="test" src="" />  

运行后,页面仍被执行2次

继续测试,把<img alt="test" src="" /> 改为  <img alt="sss" src="" onerror="this.src='http://www.baidu.com/img/baidu_logo.gif'"/>,即图片加载错误时自动加载百度的logo,保证最终src肯定有值

猜一下运行结果?

结果与不加onerror完全相同,页面仍然执行二次!(有点意外吧?哈...)

go on! 这回干脆把src=""都去掉,即改成<img alt="test" />,再次竞猜结果?

居然正常了,即仅执行了一次!(呵呵,看来多一事不如少一事)

最后再折腾一次,把src故意写成一个错误的地址,比如<img alt="test" src="http://abc.asdf.werdafsaf.sadfasdfas.xxx.gif" />

结果正常,仅执行了一次!

结论:img标签的src=""时,会引起浏览器再次访问"./"即当前目录,如果该目录下有default.aspx,index.aspx等IIS的默认文档,则默认文档会执行2次

时间: 2024-08-01 02:35:19

img标签的src=""会引起的Page_Load多次执行的相关文章

jfinal如何获取html页面中&amp;amp;lt;image&amp;amp;gt;标签中src的值

问题描述 jfinal如何获取html页面中<image>标签中src的值 如何用JFinal在后台获取src中${imagePath!}这个值

javascript修改IMG标签的src问题

 javascript修改IMG标签的SRC,在IE6下面图片修改正常,但在IE7和Firefox下面却不刷新,下面有个解决方法,大家可以参考下 1.当点击某一按钮的时候,把图片域中的图片改变一下   代码如下: <img id="randimg" src="/servlet/CreateValidateNum" width="60" height="20" />  <span style="cur

如何用img标签的src属性去访问私有ftp上的图片,而不需要下载到本地

一般情况下我们要访问ftp上的某个文件时,会有以下几个方案 1. 在浏览器的地址栏里输入ftp的ip 例如:ftp//:168.192.0.1 这样就会弹出一个登陆界面,输入用户名,密码即可进入到ftp中. 2.下载一个ftp的可视化桌面应用,输入ip,用户名,密码即可进入到ftp中. 3.现在有这么一个需求,一个BS的项目中,在页面上要访问一个ftp服务器上的图片,但是ftp是私有的,需要登录,起初的想法是,先把图片下载到本地,然后去访问打开,但是这种方案有点麻烦.最后上网查了一下,有一个很简

急!!!在线等!!为什么给img标签的src赋值,IE可以显示图片,但火狐显示不了呢

问题描述 代码如下,我想将file标签浏览的地址放到img下的src上,IE可以显示图片,但火狐不能这是怎么回事?急!!!在线等</script><scripttype="text/javascript">$("#supPhoto").change(function(){//alert($("#supPhoto").val());document.getElementById("bigImage").s

js改变img标签的src属性在IE下没反应的解决方法

在Chrome FF里都能改变成功,但在IE下却不行,网上搜了半天,大概了解了,这个是IE的一个bug,具体的解决方法如下,有类似问题的朋友可以参考下哈,希望对大家有所帮助   今天写项目时遇到个图片需要动态改变,例: <img src="images/image01.jpg" id="myImage" /> 然后改变时,使用js脚本: document.getElementById('checkCodeImage').src='images/image

javascript修改IMG标签的src问题_javascript技巧

1.当点击某一按钮的时候,把图片域中的图片改变一下 复制代码 代码如下: <img id="randimg" src="/servlet/CreateValidateNum" width="60" height="20" /> <span style="cursor:hand" onclick="reflush();return false;">看不清</s

js改变img标签的src属性在IE下没反应的解决方法_javascript技巧

今天写项目时遇到个图片需要动态改变,例: <img src="images/image01.jpg" id="myImage" /> 然后改变时,使用js脚本: document.getElementById('checkCodeImage').src='images/image02.jpg'; 然后在Chrome FF里都能改变成功,但在IE下却不行,网上搜了半天,大概了解了,这个是IE的一个bug,要想改变src属性成功,可以这么写: documen

求匹配img标签和src的正则表达式

问题描述 求匹配<imgsrc="http://localhost:2092/web/upload/2.jpg">的正则表达式! 解决方案 解决方案二:(?is)<img[^>]+src=[""'](?<src>[^""']+)[^>]*/?>解决方案三:(?i)(?<imgb[^>]*?src=(['"]?))[^'"]+(?=1)解决方案四:(?i)<img

php和js提取img标签的src属性值的正则表达式

要匹配的字符串: <img src=image/ad1.gif width="128" height="36"/><img src='image/ad2.gif' width="128" height="36" /> 正则表达式: <img[s]+src[s]*=[s]*((['"](?<src>[^'"]*)['"])|(?<src>[^s]