嗯,首先,检测浏览器从来不是一个好主意,部分原因是您必须使用不可信任的用户代理(因为来自用户的任何内容)。你应该确定你需要这样做。对每个浏览器简单地做不同的事情似乎更简单,但它不是,通常情况下,你不需要这样做(除非在极少数情况下和IE,因为是旧的IE ...)。
如果你知道你在做什么,但是,你可以使用window.location.replace()
加上的setTimeout(),这样的:
setTimeout(function(){ window.location.replace("redirectionpage"); }, 8000);
或者你可以使用元刷新,这可能是更多的逻辑(和你可以把它放在Javascript中,如果可以的话,甚至可以用PHP,这可能会更好)。像:
<meta http-equiv="refresh" content="8;URL='redirectionpage'" />
这将是很好,如果你可以提供更多的细节,但这应该是足够的。
编辑:如何把元标记取决于浏览器。
所以正如我在评论中所说,有两种解决方案可以添加meta标签。将其添加到HTML中,然后将其删除用于非Webkit浏览器,或者仅在加载页面时将其添加到webkit浏览器。
前者非常简单,您可以将标签置于<head>
之上,最好是id
(以便于访问)。例如:
<meta http-equiv="refresh" content="8;URL='redirectionpage'" id="webkit_meta" />
然后,只需在Javascript中删除它时,页面加载(只是把它放在一个<script>
标签在<head>
,在<meta>
后)的东西,如
var webkit_meta = document.getElementById("webkit_meta");
webkit_meta.parentNode.removeChild(webkit_meta);
关于第二解决方案,它避免了一个<meta>
标记,这对HTML中的某些浏览器来说是无用的。您只需创建一个meta
标签,设置其属性,然后将其放入<head>
。
var meta = document.createElement("meta");
meta.httpEquiv = "refresh";
meta.content = "8;URL='redirectionpage'";
document.getElementsByTagName("head")[0].appendChild(meta);
对于WebKit的测试,你可以简单地做if (/webkit/i.test(navigator.userAgent))
(以测试它是否是一个WebKit浏览器,添加!
,如果你想测试非WebKit浏览器)。再一次,不要忘记,信息不可信。 :)
因此,总而言之,您只需选择其中一种方法,然后将脚本删除/添加<meta>
标记,具体取决于浏览器。
<script type="text/javascript">
if (/webkit/i.test(navigator.userAgent))
{
var meta = document.createElement("meta");
meta.httpEquiv = "refresh";
meta.content = "8;URL='redirectionpage'";
document.getElementsByTagName("head")[0].appendChild(meta);
}
</script>
或者
<script type="text/javascript">
if (!/webkit/i.test(navigator.userAgent))
{
var webkit_meta = document.getElementById("webkit_meta");
webkit_meta.parentNode.removeChild(webkit_meta);
}
</script>
这应该是足够的。 ^^ (是的很多代码)
从技术上讲,你可以使用'if(/webkit/.test(navigator.userAgent))setTimeout(function(){window.location.href =“new url”;} 8000); }'。但你真的不应该检测浏览器。你在开发什么,在webkit和非webkit浏览器中产生了不同的结果? – Ian 2013-04-29 17:13:45
这实际上只是一个临时修复,直到我在非webkit浏览器上正确设置布局为止。我使用了很多渐进式CSS,因此与webkit呈现某些内容与其他引擎的方式有些不一致。一旦我完成了这个CSS,我就不需要检测浏览器。 – 2013-04-29 18:30:06
@Ian Hum我只是注意到你的评论。 :p 关于它的两件事:1.你在正则表达式后忘了i选项,因为它可以是“WebKit”(我知道默认的Chrome用户代理有它)。 2.'window.location.replace()'在这种情况下会更好(参见[这里](http://stackoverflow.com/questions/503093/how-can-i-make-a-redirect-page-in -jquery的JavaScript))。否则很好。 XD – Sk8erOfBodom 2013-05-02 16:39:12