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

ol3*_*an0 13 javascript php joomla

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

<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>
Run Code Online (Sandbox Code Playgroud)

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

有没有办法修改此代码,以实现以下目标:

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

hex*_*ide 21

您可以使用document.referrer并与之进行比较window.location.host.

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

所以你的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>
Run Code Online (Sandbox Code Playgroud)

  • 如果我来自强制在新选项卡中打开页面的页面,则不起作用。 (2认同)

Mik*_*rds 5

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

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

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

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