回溯历史的剧本并不奏效

时间:2017-11-28 20:32:44

标签: javascript

我尝试使用脚本在来自域内时回溯历史记录。来自另一个域,例如谷歌,他们必须重定向到主页。这就是我现在所拥有的:



$( document ).ready(function() {

$('.back-btn').on('click', function(event) {
  var re = /^https?:\/\/example.com\//;

  event.preventDefault();

  if (re.test(document.referrer)) {
    history.go(-1); // Only go back if the referrer is from your domain
  } else {
    window.location="example.com";
  }
});
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="javascript:void(0)" class="back-btn">Click here for one level up</a>
&#13;
&#13;
&#13;

有人知道为什么它不起作用吗?

此致

欧文

1 个答案:

答案 0 :(得分:3)

location.hostName 可以比RegExp更简单地为您提供域名。

但是,document.referrer返回一个字符串,您可以更轻松地测试以查看特定域是否在.indexOf()的字符串中,该字符串返回传入的字符串的索引位置或{{1如果没有找到。

此外,如果您不打算使用其原生行为,请不要使用超链接。这使依赖辅助技术的人更难理解您的网站,并为您创建更多代码供您编写。几乎可以点击任何可见元素,因此-1div是更好的选择,因为它们没有需要防止的原生span行为。

并且,不要使用内联HTML事件属性(即click等)或在onclick内嵌入JavaScript。 many reasons 为什么你不应该使用这种过时的方式来设置不会死的事件处理程序。

&#13;
&#13;
href
&#13;
$( document ).ready(function() {
  $('.back-btn').on('click', function(event) {
    console.log("You have clicked me!");
    if (document.referrer.indexOf(location.hostname) > -1 ) {
      history.go(-1); // Only go back if the referrer is from your domain
    } else {
      window.location = "http://example.com";
    }
  });
});
&#13;
&#13;
&#13;