4

我正在使用 PHP 进行开发,使用 Curl 跟踪指向其最终目的地的链接。我偶尔会到达带有元标记重定向或 javascript 重定向的页面,并希望足够聪明地关注它们。如果一个页面两者都有,我应该遵循哪个(即哪个会先触发)?

示例元标记刷新:

<meta http-equiv="refresh" content="0;URL='http://location1.com/'">

示例 javascript 刷新:

<script>
window.location.href='http://location2.com/';
</script>
4

3 回答 3

9

刚刚创建了这个文件(我们称之为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>标签将首先执行。

于 2013-04-11T18:47:33.147 回答
3

Hexblot 的回答是一个好主意——如果你想看看会发生什么,就试试吧。但是,当我尝试时,Chrome 去了 location2,而 IE 去了 location1。所以它似乎依赖于实现。您可能希望将此作为脚本中的可配置选项。但是,在实践中,任何在元标记中具有一个重定向而在脚本中具有不同重定向的站点,(a) 不太可能,并且 (b) 没有很好地编码,因为他们不知道你会在哪里结束。

于 2013-04-11T18:55:20.333 回答
0

我不认为有一个很好的方法来检测哪个会先开火。

元标记具有content可用于指定超时的属性。然而,在 JavaScript 中几乎不可能检测到重定向何时会发生,因为有无数种编写方式。至少在不执行它的情况下不会。例子:

var t = 100;
setTimeout(function () {
    window.location.href='http://location2.com/';
}, t * 2);
于 2013-04-11T18:50:03.017 回答