У меня есть 2 ссылки, обе из которых ведут к странице контакта, однако в контактной форме будут отображаться различные поля в соответствии с нажатой ссылкой. Есть ли возможность определить, какая ссылка была нажата с URL-адресом, выглядящим так: mysite.com/contact.html
вместо mysite.com/contact.html?link=1
? Может быть, как-то с JavaScript?Обнаружив, что ссылка была нажата
ответ
В основном у вас есть три варианта (или два, в зависимости от того, как вы хотите посчитать):
Самое лучшее, что то, что вы сказали, что вы не хотите делать: Сделайте URL, немного (возможно, с строкой запроса), а затем просмотрите
location
/location.search
на странице контактов, чтобы узнать, что они нажали.Это не должно быть столь же очевидным, как параметр строки битового запроса; он может быть более тонким, например
example.com/contact.html
противexample.com/contactb.html
. Если вы хотите, чтобы одна и та же фактическая страница служила для обоих этих URL-адресов, вы можете настроить сервер, чтобы сделать его псевдоним другого.Обратите внимание, что это лучше не просто прагматично (оно работает надежно), а потому, что URL-адреса этих двух страниц различны. Поскольку страницы отличаются друг от друга, их уникальный идентификатор (их URL-адрес) различен.
Это вариант на # 1: вместо строки запроса или имени другой страницы используйте хэш-фрагмент, например.
example.com/contact.html#A
иexample.com/contact.html#B
. На странице контактов можно проверить, что с помощьюlocation.hash. (Make sure you don't have any elements with the
ид«А»
or
«B» ', так что страница не прокручивается вниз к ним.)С другой стороны, установить информацию при нажатии на ссылку, что на странице контактов может искать. Это может быть печенье с коротким сроком действия, или session storage.
Вот как будет выглядеть хранилище сеансов. На первой странице, установив переменную сессии:
// (The value must be a string.) sessionStorage.contactType = "some value to tell you what contact type";
На странице контактов, поиска переменной сеанса:
var contacttype = sessionStorage.contactType;
Обратите внимание, что это полностью на стороне клиента. Подробнее см. Ссылку выше.
Как я вижу, Igal ищет JavaScript основанного на решениях. Насколько я знаю, переменные сеанса находятся в хранилище данных более высокого уровня. –
@ PatarticsMilán: Проверьте ссылку. Это * web * сессия хранения, полностью на стороне клиента, и доступ через JavaScript. –
Я не привязан только к JavaScript, и я ищу различные решения на выбор. Куки, например, не лучшее решение, поскольку многие люди склонны их блокировать. Хранилище сеансов или веб-хранилище могут быть хорошим решением. Вопрос в том, делают ли мобильные браузеры, такие как Chrome, Opera, Firefox, Safari, Dolphin, Puffin, Skyfire и т. Д., Поддерживают хранение сеансов и/или хранилище в Интернете? – Igal
Добавьте класс ваши ссылки, как class="detector"
и ид, как и id="B"
чем использовать событие Jquery, чтобы передать информацию.
$('.detector').click(function(){
e.preventDefault(); // prevent default anchor behavior
location.href=$(this).attr('href') + '?link=' + $(this).attr('id');
});
Это будет работать с таким количеством ссылок, как вы пожелаете.
jQuery-only ответы на вопросы, не связанные с jQuery, не полезны. –
Я понимаю, что вы смотрите делать это с JavaScript, но на стороне сервера альтернативные (что позволит вам больше гибкости в будущем):
Построить один PHP скрипт, который обрабатывает контактную форму, которая показывает разные поля формы в зависимости от конкретного URL. Предположим, он находится в example.com/contact/index.php
.
Создать .htaccess
файл в папке /contact
с чем-то вроде этого:
RewriteEngine On
RewriteBase /contact/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /([^/]+)/?$ [NC]
RewriteRule .* /contact/index.php?form=%1 [L]
Что это делает, это захватывает виртуальную папку после /contact/
и переписывает его в качестве параметра URL-адрес для index.php
(например index.php?form=sales
)
Вы можете теперь явно использовать ссылки, как это в вашем HTML:
И в контактную форму index.php
, вы можете обрабатывать различные $_GET
параметры:
if (isset($_GET['sales']))
{
//do this
}
else if (isset($_GET['support']))
{
//do that
}
Некоторые немедленные преимущества:
- Вам нужно только управлять одним файлом, и это не зависит от связки вложенных
include
s. - Решение весы; для обработки другой переменной формы контакта требуется всего несколько операторов
if
. - Он защищен от обработки на стороне клиента.
- 1. Обнаружив, какая обратная ссылка была нажата
- 2. Обнаружив, какая кнопка была нажата
- 3. Проверьте, что ссылка была нажата.
- 4. Обнаружив, какая кнопка была нажата в пакете
- 5. Проверка «как» была нажата ссылка
- 6. Обнаружив, какая кнопка пользовательского интерфейса была нажата внутри холста?
- 7. Отслеживать, как часто была нажата ссылка.
- 8. Выполнение PHP: обнаружение, когда была нажата ссылка.
- 9. Как проверить, была ли ссылка нажата?
- 10. JQuery - как определить, какая ссылка была нажата
- 11. VB6 - WebBrowser Обнаружение, если ссылка была нажата
- 12. Как вы находите, какая ссылка была нажата?
- 13. Обнаружив, что стек заполнен
- 14. Определите, на что была нажата предыдущая страница
- 15. Как определить, была ли нажата ссылка при запуске window.onbeforeunload?
- 16. Как узнать, какая ссылка 'href' была нажата с предыдущей страницы?
- 17. Динамически определить, какой ссылка была нажата с JQuery
- 18. Отслеживать, какая входящая ссылка была нажата в Google Analytics
- 19. JQuery: мы можем определить, какая ссылка была нажата с ajaxStart
- 20. Обнаружение, когда ссылка была нажата с помощью PHP
- 21. Как автоматически отслеживать, когда была нажата ссылка bit.ly x times
- 22. Обнаружив, что функция кнопки завершена
- 23. Обнаружив, что объект неоднократно повторяется
- 24. java.rmi.NotBoundException. Обнаружив, что переплеты доступны
- 25. узнать, какая ссылка была нажата в ее onClickTopics
- 26. Показать pdf, когда ссылка была нажата в WebView android
- 27. Остановить навигацию ПОСЛЕ того, как ссылка была нажата
- 28. Finding список которых уль ссылка, была нажата с помощью JQuery
- 29. Как проверить, была ли ссылка нажата в php
- 30. Как узнать, что ссылка была видна
Вы можете использовать .htaccess, чтобы переписать ссылки на URL. Проверьте это: http://stackoverflow.com/questions/11116087/url-rewriting-doesnt-rewrite-automatically – Cecil
Вы можете назначить куки-файл в событии onclick каждой ссылки, а затем проверить файл cookie на странице контактов. –
Что случилось с передачей его в URL-адресе? Безопасная ставка, если вы не хотите работать с файлами cookie, которые пользователи могут не принимать. – NewInTheBusiness