我正在开发PHP,使用Curl跟踪到最终目的地的链接。我偶尔会到达一个带有元标记重定向或javascript重定向的页面,并希望能够足够聪明地跟随它们。如果一个页面都有两个,我应该遵循哪个(即哪个会首先触发)?
示例元标记刷新:
<meta http-equiv="refresh" content="0;URL='http://location1.com/'">
示例javascript刷新:
<script>
window.location.href='http://location2.com/';
</script>
答案 0 :(得分:8)
刚刚创建了这个文件(我们称之为test.html
)
<html>
<head>
<meta http-equiv="refresh" content="0;URL='http://location1.com/'">
<script type="text/javascript">
window.location.href='http://location2.com/';
</script>
</head>
<body>
Hello
</body>
</html>
您可以复制并保存它。打开后,您将被定向到http://location2.com
请注意,如果<script>
标记不在<head>
标记中,则<meta>
标记会先执行。
答案 1 :(得分:3)
Hexblot的回答是一个好主意 - 如果你想看看会发生什么,试试吧。但是,当我尝试使用时,Chrome转到了location2,IE转到了location1。所以它似乎是依赖于实现的。您可能希望将此作为脚本上的可配置选项。但实际上,任何在元标记中都有一个重定向而在脚本中有不同重定向的网站,(a)不太可能,以及(b)编码不好,因为他们不知道你最终会在哪里。
答案 2 :(得分:0)
我认为没有一种好的方法可以检测哪一个会先发射。
元标记具有content
属性,可用于指定超时。但是,在JavaScript中几乎不可能检测到重定向何时会发生,因为有无限的方法来编写它。至少没有执行它。例如:
var t = 100;
setTimeout(function () {
window.location.href='http://location2.com/';
}, t * 2);