Нужна помощь по JavaScript (с меня пиво!)

12
Rock'n'rolla
На сайте с 14.09.2009
Offline
146
1457

Проблема такая.

Есть хтмл код. Он должен показываться только при отсутствии куки, если кука есть - то код не показывается. На пхп давно реализовал, но вот надо на яве.

Алгоритм просто:

ЕСЛИ кука есть (или если кука banner==1) то

{

ниче не делаем

}

иначе

{

выводим тут хтмл код

и создаем куку (или куке banner присваиваем 1)

}

Получаем, что человек, пришедший на сайт будет только один раз видеть хтмл код. Если он повторно на него попадет - код уже он не увидит.

Спасибо заранее, мужики, за помощь!

"Vulcan-Bit - лучшая партнерка в сети" (http://vulcan-bit.com?invite=artem_kozirev) KMA.BIZ - Партнерка с крутым конвертом и отчислениями в долларах. Лить! (http://kma.biz)
IL
На сайте с 20.04.2007
Offline
435
#1

Если не используется jquery.cookie, можно позаимствовать функции, например, отсюда http://learn.javascript.ru/cookie (разместить в подключаемый JS)


<script language="javascript">

if (getCookie('banner')!=1) {
document.write('тут код баннера');
setCookie('banner', 1, {expires:3600*24*30}); // на месяц
}

</script>
... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
colaweb
На сайте с 25.06.2013
Offline
10
#2

Можно библиотеку подключить

<script src="//yandex.st/jquery/cookie/1.0/jquery.cookie.min.js"></script>

и сделать как Вы написали

ЕСЛИ кука есть (или если кука banner==1) то
{
ниче не делаем
}
иначе
{
выводим тут хтмл код

и создаем куку (или куке banner присваиваем 1)
}
Разработка интернет-ресурсов - colaweb.ru (http://colaweb.ru/internet-magazinyi)
Rock'n'rolla
На сайте с 14.09.2009
Offline
146
#3

colaweb, можно поподробнее как код сам будет выглядеть?

---------- Добавлено 25.06.2013 в 17:41 ----------

ivan-lev, сделал так как Вы писали - ни кука не добавилась, ни код не отображается.

Может надо использовать спец символы какие то когда в ява скрипт помещаешь хтмл код.

IL
На сайте с 20.04.2007
Offline
435
#4
Может надо использовать спец символы какие то когда в ява скрипт помещаешь хтмл код.

Если без кода.. просто blabla вставить. - отработает?

Для jquery.cookie заменить соответствующие строчки


if ($.cookie('banner')!=1)
...
$.cookie('banner', '1', { expires: 30, path: '/' });
Rock'n'rolla
На сайте с 14.09.2009
Offline
146
#5

Вот так кука кидается нормально:


<script language="javascript">
expires=new Date();
expires.setMinutes(600+expires.getMinutes());
document.cookie="bannerlg=1; path=/; expires="+ expires.toGMTString();


</script>

А вот если проверку вставить

<script language="javascript">

if (getCookie('bannerlg')!=1) {
document.write('<div>test</div>');

expires=new Date();
expires.setMinutes(600+expires.getMinutes());
document.cookie="bannerlg=1; path=/; expires="+ expires.toGMTString();

}

</script>

То ни куку не кидает, ни хтмл код не вставляет(

Rock'n'rolla
На сайте с 14.09.2009
Offline
146
#6

Выручайте, народ((((

IL
На сайте с 20.04.2007
Offline
435
#7
То ни куку не кидает, ни хтмл код не вставляет(

Так он проверяет.. и ничего не кидает.. всё "как заказано".. Если кука есть - ничё не делать.

Или ошибки смотреть.

Что выдаст:

alert (getCookie('bannerlg'))

Если его перед проверкой вставить?

Кидай в личку адрес, где кука ставится..

doctorpc
На сайте с 12.07.2009
Offline
112
#8

На одном проекте использую такие функции как раз для отображения всплывающего окна пользователям только при первом посещении сайта. Уже не помню где взял. Может не самый актуальный вариант, но работает:



function setCookie(isName,isVal) {
document.cookie = isName + "=" + isVal + ";path=/;expires=";
}

function getCookie(isName) {
cookieStr = document.cookie;
startSlice = cookieStr.indexOf(isName+"=");
if (startSlice == -1) {
return false
}
endSlice = cookieStr.indexOf(";",startSlice+1);
if (endSlice == -1){
endSlice = cookieStr.length
}
isData = cookieStr.substring(startSlice,endSlice)
isValue = isData.substring(isData.indexOf("=")+1,isData.length);
return isValue;
}

Пример использования для вашего случая:


nValue = getCookie('fancyAds');
if (!nValue) {
// Куки не существуют
// Устанавливаем их
setCookie('fancyAds','true');
// Здесь показываем html контент пользователю
} else {
// существуют. Контент показывать уже не нужно.
}

Вижу, что здесь не учтено, как минимум, время действия куки. Если нужно, то прийдется дорабатывать или использовать jquery вариант выше.

colaweb
На сайте с 25.06.2013
Offline
10
#9
Rock'n'rolla:
colaweb, можно поподробнее как код сам будет выглядеть?

Примерно так


<head> // подключаем библиотеки в <head>
<!-- jQuery -->
<script src="//yandex.st/jquery/1.9.1/jquery.min.js"></script>
<!-- cookie -->
<script src="//yandex.st/jquery/cookie/1.0/jquery.cookie.min.js"></script>
</head>

<script> // добавляем в конец страницы перед </body>
(function($) {
$(function() {

// Проверим, есть ли кука banner
if (!$.cookie('banner')) {
//выводим тут хтмл код
}
// создаем куку banner
$.cookie('banner', true, {
expires: 365,
path: '/'
});
})
})(jQuery)
</script>
</body>

Rock'n'rolla
На сайте с 14.09.2009
Offline
146
#10
function getCookie(isName) {
cookieStr = document.cookie;
startSlice = cookieStr.indexOf(isName+"=");
if (startSlice == -1) {
return false
}
endSlice = cookieStr.indexOf(";",startSlice+1);
if (endSlice == -1){
endSlice = cookieStr.length
}
isData = cookieStr.substring(startSlice,endSlice)
isValue = isData.substring(isData.indexOf("=")+1,isData.length);
return isValue;
}

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

Я не силен в яве, может кто увидит ошибку там?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий