IE javascript重定向

时间:2010-01-20 02:55:06

标签: javascript internet-explorer internet-explorer-6

我有一个javascript函数,可以将用户重定向到diff页面。就像这样......

redirect : function(url)
{
    if(!url)
        return false;

    alert(url);
    if (this.browserClass.isW3C) //IE 6.X comes here
    {
        window.location.href = url;
    }
    else if(this.browserClass.isIE4)
    {
        window.location.href = url;
    }
    else if (this.browserClass.isNN4)
    {
        window.location = url;
    }
    else
    {
        window.location = url;
    }
    return false;
},

但问题是这在IE(Internet Explorer 6.X)中不起作用。经过一场短暂的战斗后,当我将代码更改为此时,我看到IE正在重定向 -

    if (this.browserClass.isW3C)
        setTimeout("location.href = '" +url+"'", 0);

问题解决了。但是这里发生了什么?有人可以教育我吗?或者它只是IE的那些令人头脑麻木的特质之一......

2 个答案:

答案 0 :(得分:4)

这个功能完全是浪费时间。对location.href的分配在所有当前现存的浏览器中同样有效。 this.browserClass.isNN4暗示这段代码令人担心本世纪不存在的东西。好像是臭旧的浏览器嗅探还不够糟糕。 (无论如何,即使在Netscape中,这两项任务都有效。)

setTimeout("location.href = '" +url+"'", 0);

尽量不要将字符串传递给setTimeout,它与eval具有相同的问题(例如,您的网址包含撇号...繁荣)。如果需要,传递函数,内联函数(setTimeout(function() { location.href= url; }, 0);)。

然而,这对我来说有什么味道是你在链接上捕获clickmousedown事件,而不是取消事件(通过从事件处理程序返回false) 。因此,可以发生默认操作后的链接,并且可能会根据浏览器覆盖location.href导航。

答案 1 :(得分:0)

如果您不关心保持历史记录的Web浏览器(后退和前进按钮),只需使用javascript location.replace(url)函数,否则您始终可以使用location.href属性。

来源:http://www.roseindia.net/javascript/javascript-location-replace.shtml

window.location(如果我没记错的话)是一个对象而不是字符串属性。

我不记得document.location在IE6中是否仍然有效(我退出IE6 yonkers前)。