JS onclick=“history.go(-1) 仅当在我的域下

2022-08-30 20:59:27

我有一个Joomla网站,我有以下问题,我需要在我的产品详细信息页面上使用“返回搜索页面”功能,并且根据对我的初始化问题的回复进行一些更改后,我正在使用此代码:

<br/><a href="" onclick="if (document.referrer.indexOf(window.location.host) !== -1) alert('true'); { history.go(-1); return false; } else { window.location.href = 'mysite.com.br'; }"><?php echo JText::_('VOLTAR'); ?></a>

现在,如果访问者从另一个网站直接来到我的产品页面并单击此内容,他将被重定向到我网站的主页,这没关系,但是如果我在我的网站的搜索页面中,单击产品页面,然后单击返回搜索链接,访问者也会重定向到我的主页, 这不好,应该重定向到上一页,这是他自己的搜索页面。

有没有办法修改此代码以完成如下操作:

如果访问者来自我的搜索页面或来自我网站中的任何位置,通过单击此内容,他将被重定向到上一页,如果访问者来自我的网站之外,则通过单击此内容,他将被重定向到我的主页?


答案 1

您可以使用它并将其与 进行比较。document.referrerwindow.location.host

if (document.referrer.split('/')[2] === window.location.host)
if (document.referrer.indexOf(window.location.host) !== -1)

所以你的HTML将看起来像这样:

<a href="" onclick="if (document.referrer.indexOf(window.location.host) !== -1) { history.go(-1); return false; } else { window.location.href = 'website.com'; }"><?php echo JText::_('VOLTAR'); ?></a>

答案 2

将分支逻辑添加到内联单击处理程序中会变得混乱。如果您可以将它移动到函数并引用它,它将更具可读性。

if(document.referrer.indexOf('mysite.com') >= 0) {
    history.go(-1);
}
else {
    window.location.href = 'myHomePageUrl'; // this might just be '/' of your site
}

编辑:如果您不关心向页面全局范围添加名称,则可以在正在创建的链接之前的脚本标记中创建一个函数:

<script>
    function backClick() {
        // above conditional goes here.
        return false;
    }
</script>
<br/><a href="" onclick="backClick()"><?php echo JText::_('VOLTAR'); ?></a>