JS onclick = "history.go(-1) только если в моем домене - программирование

JS onclick = "history.go(-1) только если в моем домене

У меня есть сайт Joomla, и у меня есть следующая проблема. Мне нужна функция "Вернуться к поисковой странице" на моей странице сведений о продукте, и я использую этот код после некоторых изменений в соответствии с ответами на мой вопрос:/p >

<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>

Теперь, если посетитель приходит с другого сайта непосредственно на мою страницу продукта и нажимает на это, он будет перенаправлен на домашнюю страницу моего сайта, и это нормально, но если я на странице поиска моего сайта, нажмите на страницу продукта, а затем нажмите ссылку назад к поиску, посетитель также будет перенаправлен на мою домашнюю страницу, что не очень хорошо, оно должно быть перенаправлено на предыдущую страницу, которая была его собственной страницей поиска.

Есть ли способ изменить этот код, чтобы выполнить что-то вроде:

если посетитель приходит с моей страницы поиска или из любого места на моем сайте, щелкнув по нему, он будет перенаправлен на предыдущую страницу, и если посетитель пришел из-за пределов моего сайта, щелкнув по нему, он будет перенаправлен на мою домашнюю страницу

4b9b3361

Ответ 1

Вы можете использовать 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>

Ответ 2

Добавление логики ветвления в обработчик встроенного клика становится беспорядочным. Если вы можете переместить это в функцию и ссылаться на нее, это будет более читаемо.

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

Изменить: Если вас не интересует добавление имен в глобальную область страниц, вы можете создать функцию в теге script непосредственно перед создаваемой вами ссылкой:

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

Ответ 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()">