我尝试使用脚本在来自域内时回溯历史记录。来自另一个域,例如谷歌,他们必须重定向到主页。这就是我现在所拥有的:
$( 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;
有人知道为什么它不起作用吗?
此致
欧文
答案 0 :(得分:3)
location.hostName
可以比RegExp更简单地为您提供域名。
但是,document.referrer
返回一个字符串,您可以更轻松地测试以查看特定域是否在.indexOf()
的字符串中,该字符串返回传入的字符串的索引位置或{{1如果没有找到。
此外,如果您不打算使用其原生行为,请不要使用超链接。这使依赖辅助技术的人更难理解您的网站,并为您创建更多代码供您编写。几乎可以点击任何可见元素,因此-1
或div
是更好的选择,因为它们没有需要防止的原生span
行为。
并且,不要使用内联HTML事件属性(即click
等)或在onclick
内嵌入JavaScript。 many reasons 为什么你不应该使用这种过时的方式来设置不会死的事件处理程序。
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;