17

我有一个 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>

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

有什么方法可以修改此代码以完成以下操作:

如果访问者来自我的搜索页面或来自我网站中的任何地方,点击这个他将被重定向到上一页,如果访问者来自我的网站之外,点击这个他将被重定向到我的主页?

4

3 回答 3

25

您可以使用document.referrer它并将其与window.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>
于 2013-10-17T02:13:35.373 回答
5

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

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>
于 2013-10-17T02:13:23.770 回答
3

我已经尝试了上面的一些代码,我需要进行一些更改以使其适合我。

  1. 删除 href=""
  2. “window.location.href”必须有 http://

function backClick() {
			if (document.referrer.indexOf(window.location.host) !== -1) {
				history.go(-1); return false;
			}
			else { window.location.href = 'https://stackoverflow.com'; }
    }
<a onclick="backClick()">go back</a>

于 2019-06-20T07:27:53.833 回答