Javascript 在后台加载图像并测试OneError事件

Javascript 在后台加载图像并测试OneError事件,javascript,image,onerror,Javascript,Image,Onerror,我有一个asp.net webapp,它需要用户身份验证,身份验证设置为60分钟后超时。webapp中的一个页面是谷歌地图页面,该页面加载一个kml,该kml具有指向安全站点上信息的链接。我正在尝试解决移动用户的问题,他们可能会让他们的会话过期,并返回到他们的浏览器,该浏览器仍在谷歌地图页面上,尽管地图仍然有效,但安全站点上的所有信息链接都将导致重定向到login.aspx。我一直在尝试实现的解决方案是以设定的间隔在后台加载一个非常小的图像文件,并在OneError事件发生时执行重定向。我的测试

我有一个asp.net webapp,它需要用户身份验证,身份验证设置为60分钟后超时。webapp中的一个页面是谷歌地图页面,该页面加载一个kml,该kml具有指向安全站点上信息的链接。我正在尝试解决移动用户的问题,他们可能会让他们的会话过期,并返回到他们的浏览器,该浏览器仍在谷歌地图页面上,尽管地图仍然有效,但安全站点上的所有信息链接都将导致重定向到login.aspx。我一直在尝试实现的解决方案是以设定的间隔在后台加载一个非常小的图像文件,并在OneError事件发生时执行重定向。我的测试代码如下:

<script type="text/javascript">
    var interval;
    interval = setInterval('chkAuth()', 10000);

    function chkAuth() {
        var testImg = new Image();
        testImg.onerror = function () {
            alert("Your session has expired!");
        }
        testImg.onload = function () {
            alert("Your session has extended!");
        }
        testImg.src = "image url"
    }
</script>

var区间;
间隔=设置间隔('chkAuth()',10000);
函数chkAuth(){
var testImg=新图像();
testImg.onerror=函数(){
警报(“您的会话已过期!”);
}
testImg.onload=函数(){
警报(“您的会话已扩展!”);
}
testImg.src=“图像url”
}
当我测试代码时,即使我的会话已过期,我也会得到onload事件,我可以通过尝试在另一个窗口中加载图像来验证该事件,从而重定向到login.aspx。我试着测试onerror事件,把一个不正确的url作为图像源,在这种情况下它会触发。我的想法是,此解决方案还可以至少在浏览器处于活动状态时扩展asp.net会话

当图像url导致重定向到login.aspx时,为什么我没有收到onerror事件?

如下所示:

function chkAuth() {
        var date = new Date();
        var currentTime = date.getTime();
        var imgURL = 'small.png' + '?time=' + currentTime;
        var testImg = new Image();
        testImg.onerror = function () {
            alert("Your session has expired!");
            location.reload();
        }
        testImg.onload = function () {
            alert("Your session has extended!");
        }
        testImg.src = imgURL;
    }
问题是图像对象存储在浏览器缓存中。通过将当前时间添加到URL字符串,我强制浏览器重新加载图像。我没有想到图像会被缓存,因为我只是在后台加载图像对象,而没有将其绑定到文档