Javascript - проверка на хэш, игнорирование кода Google Analytics - PullRequest
0 голосов
/ 12 августа 2011

Мы добавляем видео на домашнюю страницу сайта и хотим иметь возможность автоматически открывать видео (в контейнере в стиле лайтбокса) всякий раз, когда в URL присутствует тег #video:

http://www.domain.com#video

Видео должно открываться, если по сайту щелкнуть ссылку на сайте (т. Е. <a href="#video">), а также если хеш присутствует в URL-адресе при загрузке страницы.

Достаточно просто проверить хэш в URL-адресе, используя window.location.hash или когда щелкают ссылку с хешем и запускается связанная функция javascript.Это работает, как и ожидалось, без каких-либо проблем.

Однако, поскольку этот URL-адрес будет рассылаться в электронных письмах с автоматически добавленным кодом Google Analytics, код аналитики добавляется в конец URL-адреса:

http://www.domain.com#video?utm_source=...

Поскольку код аналитики будет меняться при каждой кампании по электронной почте, я не могу сделать простой Javascript replace(), чтобы игнорировать код аналитики.

Как мне проверить, присутствует ли хеш в URL, ноигнорировать что-нибудь после?если представить?

Ответы [ 3 ]

0 голосов
/ 12 августа 2011

Не является ли правильная форма URL-адреса, в котором после параметров запроса должен быть хеш-код?Тогда переменная location.hash будет работать правильно, и вам не понадобится специальный код.Ваш URL должен выглядеть следующим образом, и тогда вы можете просто использовать location.hash, который будет #video:

http://www.domain.com? Utm_source = xxx # video

Я не советую это как решение (я думаю, что вы должны сделать исправленные URL-адреса допустимыми), но вы можете использовать этот код для анализа значения хеш-функции в URL-адресе, даже если он находится в недопустимой позиции:

var matches = window.location.href.match(/#(.*?)(\?|$)/);
if (matches) {
    var hash = matches[1];
}

Этот код извлекает из "#" либо конец строки, либо "?"что наступит раньше.Вы можете увидеть, как он запускается на нескольких тестовых URL: http://jsfiddle.net/jfriend00/HuqL7/.

0 голосов
/ 12 августа 2011

(Это буквальный ответ на ваш вопрос, но есть огромная оговорка) Технически, вы можете просто проверить:

var h = window.location.hash;
var ind = h.indexOf( '?' );
var test = ind <0?h:h.substr(0, ind)

Если вы хотите, чтобы Google Analytics работал, у вас могут быть проблемы #.Правило состоит в том, что все после # не отправляется на сервер, что означает, что ваша аналитика может выйти из окна.Вы должны убедиться, что ваш хэш добавлен после всего, что связано с Google.Если это так, то вам не нужно беспокоиться о тестировании.

0 голосов
/ 12 августа 2011
location.hash.match(/[^?]*/)

Предполагая, что хеш всегда первый, он должен это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...