IE浏览器的JavaScript重定向(IE javascript redirection)

2019-10-29 17:30发布

我有一个JavaScript功能,用户重定向到一个页面差异。 它是这样的...

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的那些头脑麻木的特质之一...

Answer 1:

此功能是完全是浪费时间。 分配到location.href同样适用于目前所有现存的浏览器。 this.browserClass.isNN4是一个暗示,这个代码是担心不会在本世纪存在的东西。 就好像是臭老浏览器嗅探还不够坏。 (反正即使在Netscape中,这两个任务的工作。)

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

尽量不要字符串传递给setTimeout ,这是因为同样的事情eval相同的所有问题(例如,您的网址中包含撇号......咚)。 传递函数,内联一个如果必要的话( setTimeout(function() { location.href= url; }, 0); )。

但是这是什么气味像我是你捕捉一个click或者mousedown一个链接事件,而不是取消该事件(通过返回false从事件处理程序)。 因此,该链接下面的默认行为可能会发生和可能,这取决于浏览器,覆盖location.href导航。



Answer 2:

如果你是不是Web浏览器保存的历史(前进和后退按钮)的关注,只是使用JavaScript location.replace(url)功能,否则你可以一直使用location.href属性。

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

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

我不记得是否document.location仍然是有效的IE6,但(我以前退出IE6扬克斯)。



文章来源: IE javascript redirection