Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/480.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS onclick=";历史记录。只有在我的域下才能执行(-1)_Javascript_Php_Joomla - Fatal编程技术网

Javascript JS onclick=";历史记录。只有在我的域下才能执行(-1)

Javascript JS onclick=";历史记录。只有在我的域下才能执行(-1),javascript,php,joomla,Javascript,Php,Joomla,我有一个Joomla网站,我有以下问题,我需要在我的产品详细信息页面上设置一个“返回搜索页面”功能,根据对我的初始问题的答复,在进行一些更改后,我正在使用此代码: <br/><a href="" onclick="if (document.referrer.indexOf(window.location.host) !== -1) alert('true'); { history.go(-1); return false; } else { window.location.hr

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

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

有没有办法修改此代码以完成以下任务:


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

将分支逻辑添加到内联单击处理程序会变得混乱。如果您可以将其移动到一个函数并引用它,那么它的可读性将大大提高

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>

函数backClick(){
//上面的条件在这里。
返回false;
}


您可以使用
document.referer
并将其与
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>

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

  • 删除href=“”
  • “window.location.href”必须具有 http://
  • function backClick(){
    if(document.referer.indexOf(window.location.host)!=-1){
    history.go(-1);返回false;
    }
    else{window.location.href='https://stackoverflow.com'; }
    }

    返回
    nice,那么如何将onclick参数与HTML、JS和PHP结合起来呢?抱歉,我有点困惑,我需要将这个IF子句与下面的代码结合起来,以便在页面中有一个类似“返回搜索”的文本:

    ,我不是程序员,但我正在尝试解决这个问题,你能帮我吗?请参阅上面的编辑。随着页面变得越来越复杂,您最终会希望将大部分Javascript移动到单独的脚本文件中,并从闭包中注册事件处理程序,以避免名称泄漏到全局命名空间中。这开始变得非常高级,但是,如果你的页面很简单,这应该可以做到。您好,你的脚本与我需要的相反,我的意思是,如果访问者来自其他域,脚本将调用
    history.go(-1)
    并将访问者发送回其他域,如google,如果访问者从我网站的搜索页面进入产品页面,我点击返回搜索链接,他会被重定向到我网站的主页,你能修复它吗?只是确认一下,你使用的代码与现在显示的完全一样,但是用你的域名替换了“mysite.com”?我昨天确实在最初发布后不久编辑了这篇文章,因为条件中有一个错误,我只想确保您有:…indexOf('mysite.com')>=0是的,我使用的代码只是用我自己的域URL替换mysite.com,我也用我的主页URL替换myHomePageUrl,没有http://,是的,我还使用>=0,是的,那会是什么问题呢?是的,这很酷,但我无法将onclick参数与HTML、JS和PHP结合起来,以便在“返回搜索”页面中有超链接文本:

    ,你能帮忙吗?修改后的答案。将
    website.com
    更改为要重定向到的任何网站,或使用
    window.location.host
    使用当前URL而不使用路径。我在Firefox和Chrome中进行了测试,我从google链接进入我的页面,我点击了后退按钮,即使在点击链接之前我能在浏览器的底部栏中看到按钮的链接似乎指向了我网站的主页,如果我点击它,我会被重定向回谷歌,奇怪。。。你能修复它吗?重定向时什么是
    文档。引用者
    ?对不起,我不理解你的问题,我粘贴了你的代码并用我的网站URL更改了网站,引用者是谷歌页面,但我想我不理解你的问题,抱歉,这肯定应该与您的网站相结合,因为即使用户在您的网站上,也有许多原因使他们无法返回历史记录(新窗口、https到http等)