Javascript 要追溯历史的脚本不会';行不通

Javascript 要追溯历史的脚本不会';行不通,javascript,Javascript,我试图使用一个脚本,当我从域中返回时,可以追溯到历史。来自另一个领域,例如谷歌,他们必须重定向到主页。这就是我此刻所拥有的: $(文档).ready(函数(){ $('back btn')。在('click',函数(事件){ var re=/^https?:\/\/example.com\/; event.preventDefault(); if(重新测试(文件参考人)){ history.go(-1);//仅当推荐人来自您的域时才返回 }否则{ window.location=“exampl

我试图使用一个脚本,当我从域中返回时,可以追溯到历史。来自另一个领域,例如谷歌,他们必须重定向到主页。这就是我此刻所拥有的:

$(文档).ready(函数(){
$('back btn')。在('click',函数(事件){
var re=/^https?:\/\/example.com\/;
event.preventDefault();
if(重新测试(文件参考人)){
history.go(-1);//仅当推荐人来自您的域时才返回
}否则{
window.location=“example.com”;
}
});
});

可以比RegExp更简单地获取域

但是,
document.referer
返回一个字符串,您可以使用
.indexOf()
更轻松地测试特定域是否在该字符串中,该函数返回传入字符串的索引位置,如果未找到该字符串,则返回
-1

另外,当您不打算使用超链接的本机行为时,请不要使用超链接。这使得依赖辅助技术的人更难理解你的网站,也为你编写了更多的代码。几乎任何可见的元素都可以被单击,因此这里最好选择
div
span
,因为它们没有需要防止的本机
单击行为

并且,不要使用内联HTML事件属性(即
onclick
等)或在
href
中嵌入JavaScript。有为什么不应该使用这种过时的方法来设置不会消亡的事件处理程序

$(文档).ready(函数(){
$('back btn')。在('click',函数(事件){
log(“你点击了我!”);
if(document.referer.indexOf(location.hostname)>-1){
history.go(-1);//仅当推荐人来自您的域时才返回
}否则{
window.location=”http://example.com";
}
});
});


点击此处升级一级
Hi RobbieMilejczak,感谢您的回复!我已将代码更改为您的代码,但现在文本不是链接,无法单击。还有其他提示吗?@user2997202文本是可单击的,但您需要在应用程序中使用此代码,因为其中有
文档。referer
和匹配的
位置。主机名
。堆栈溢出代码段环境阻止了
窗口。出于安全原因,位置发生了更改。嗨,Scott,我想首先有一个叫Bobbie;)的人的答案。我正在wordpress网站上使用此代码。我已经编辑了主机名,但没有发生任何事情…@erwin\m我对Wordpress不太了解,但我相信您必须做一些特殊的事情来将自定义JavaScript集成到代码中。您可以从我编辑的答案中看到,单击
div
确实会调用click事件处理程序(即使重定向被堆栈溢出禁用)。@Scott Marcus,我确实看到了事件处理程序的反应。在wordpress中,我在头部添加了外部脚本,这也是wordpress的正确做法。在页面本身中,只有div,没有什么特别的。不明白…我很愚蠢,路径没有到达js文件:(。我认为在那个错误之后,这是有效的,但它不应该。从我网站的另一个页面,我被引导到主页,而不是历史-1。