jQuery: как добавить в постоянные элементы сайта только один раз? - PullRequest
3 голосов
/ 02 июня 2011

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

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

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

Может быть, есть способ проверить непрозрачность элемента (с предыдущей страницы?) И , если , это 100%, чтобы сохранить его как есть, в противном случае исчезнутьэлемент - но я не уверен, как это можно сделать.Или - возможно, если есть способ проверить , если посетитель пришел на страницу с того же основного доменного имени, в этом случае непрозрачность всех элементов должна быть равна 100%, в противном случае они должны появиться?

Я был бы признателен за практическое решение!

Кто-то еще в StackOverflow написал «просто используйте cookie» в аналогичном случае, и решение было принято, нофактический пример файла cookie не был предоставлен, и это было бы очень полезно, если бы кто-то мог это сделать.

Ответы [ 4 ]

1 голос
/ 02 июня 2011

Вы можете посмотреть на реферера клиента (используя JavaScript) - если он содержит ваш домен, вы знаете, что пользователь пришел с другой страницы вашего сайта.

Что-то вроде ... (не проверено)

if (document.referrer.indexOf('www.mydomain.com' === -1) {
  // show animation
}

Это будет отображать анимацию каждый раз, когда пользователь посещает ваш сайт из другого места, тогда как при использовании cookie-файла вы узнаете за время существования cookie-файла, если бы пользователь был там раньше.

Кроме того, этот подход может нуждаться в изменении, чтобы использовать регулярное выражение без учета регистра, поскольку я думаю, что indexOf чувствителен к регистру, и кто-то, возможно, ввел ваш URL неправильно

1 голос
/ 02 июня 2011

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

0 голосов
/ 02 июня 2011

Не уверен, что ваша базовая структура, но в ASP.NET вы можете проверить Session.IsNewSession и добавить класс к этим элементам (например, firstTimeFadeIn), если это правда ... Код jQuery, для запускавсе предметы этого класса будут достаточно легкими.

0 голосов
/ 02 июня 2011

Вы можете «просто использовать куки», чтобы отметить, что анимация была воспроизведена.Хаха, только что увидел последнюю часть твоего поста.Я фанат этой библиотеки jQuery Cookie .Кроме того, я обернул его в JS-класс поставщика данных следующим образом:

mycompany.data.cache = {
    grab: function(key){
        return $.evalJSON($.cookie(key));
    },
    push: function(key, value){
        $.cookie(key, $.toJSON(value), {path: '/', expires: 7});
    },
    remove: function(key){
        $.cookie(key, null);
    }
};

Чтобы вы могли написать

$(document).ready(function(){
    bool animationPlayed = mycompany.data.cache.grab('animationPlayed');

    if(!animationPlayed)
        //play animation...
    else
        //do something else...
});
...