У меня есть сайт 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>
Теперь, если посетитель приходит с другого сайта непосредственно на мою страницу продукта и нажимает на это, он будет перенаправлен на домашнюю страницу моего сайта, и это нормально, но если я на странице поиска своего сайта, нажмите на страницу продукта и затем нажмите на ссылку «Назад к поиску», посетитель также перенаправляется на мою домашнюю страницу, что не очень хорошо, оно должно быть перенаправлено на предыдущую страницу, которая была его собственной страницей поиска.
Есть ли способ изменить этот код, чтобы выполнить что-то вроде:
если посетитель приходит с моей страницы поиска или из любого места на моем сайте, щелкнув по нему, он будет перенаправлен на предыдущую страницу, и если посетитель пришел из-за пределов моего сайта, щелкнув по нему, он будет перенаправлен на мою домашнюю страницу?
Вы можете использовать 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>
Добавление ветвящейся логики в обработчик встроенного клика становится беспорядочным. Если вы можете переместить это в функцию и ссылаться на нее, это будет более читаемо.
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>