Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   javascript не удалят куки из Мозила (https://javascript.ru/forum/css-html-firefox-mizilla/29689-javascript-ne-udalyat-kuki-iz-mozila.html)

sashgera 07.07.2012 14:20

javascript не удалят куки из Мозила
 
При загрузке сайта выезжает div с рекламой, при закрытии блока javascript удаляет куки. Блок

будет всплывать один раз при открытии страницы, затем для его появления потребуется перезапуск

браузера. Корректно работает в Opera, Google Chrome, IE.
В Мозила тоже все срабатывает, но если в настройках этого браузера

(Инструметы/Настройки/Основные) применить: "При запуске Firefox: Показать окна и вкладки,

открытые в прошлый раз", то в открытой вкладке с рекламным блоком не удаляются куки и

соответственно этот блок не показывается.
Пожалуйста, помогите решить проблему.
Убедительная просьба, "не тыкать меня носом" в учебники HTML, Javascript и тд. - просто помогите.

javascript
var ie=document.all
var dom=document.getElementById
var ns4=document.layers
var calunits=document.layers? "" : "px"

var bouncelimit=32 //(must be divisible by 8)
var direction="up"

function initbox(){
if (!dom&&!ie&&!ns4)
return
crossobj=(dom)?document.getElementById("dropin").style : ie? document.all.dropin : 

document.dropin
scroll_top=(ie)? truebody().scrollTop : window.pageYOffset
crossobj.top=scroll_top-250+calunits
crossobj.visibility=(dom||ie)? "visible" : "show"
dropstart=setInterval("dropin()",25)
}
function dropin(){
scroll_top=(ie)? truebody().scrollTop : window.pageYOffset
if (parseInt(crossobj.top)<100+scroll_top)
crossobj.top=parseInt(crossobj.top)+40+calunits
else{
clearInterval(dropstart)
bouncestart=setInterval("bouncein()",50)
}
}
function bouncein(){
crossobj.top=parseInt(crossobj.top)-bouncelimit+calunits
if (bouncelimit<0)
bouncelimit+=8
bouncelimit=bouncelimit*-1
if (bouncelimit==0){
clearInterval(bouncestart)
}
}
function dismissbox(){
if (window.bouncestart) clearInterval(bouncestart)
crossobj.visibility="hidden"
}
function truebody(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : 

document.body
}
function get_cookie(Name) {
var search = Name + "="
var returnvalue = ""
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) {
offset += search.length
end = document.cookie.indexOf(";", offset)
if (end == -1)
end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}
function dropornot(){
if (get_cookie("droppedin")==""){
window.onload=initbox
document.cookie="droppedin=yes"
}
}
dropornot()


DIV
<div id="dropin" 

style="position:fixed;visibility:hidden;left:40%;top:500px;width:430px;height:430px;background-co

lor:#EBEBEB">
<div align="right"><a href="action.php" onClick="dismissbox();return false">
<img src="banner/img/close.png" border=0 vspace=0 hspace=0 align="right" width="15" height="15" 

alt="закрыть"/>
</a></div>
<p><center><font style="font-size:19px; color:#FF0000;">Здесь текст</font><br><br><a 

href="action.php"><img src="banner/img/glass_banner.png"   border="0"></a><br><br>
<a href="action.php"><b>Подробнее>>></b></a>
</center></p>
</div>


Здесь тестируемая страница: http://glass-pgc.ru/1.php

Deff 07.07.2012 15:31

sashgera,
http://javascript.ru/forum/misc/2942...tml#post184541

oneguy 07.07.2012 15:55

Для Firefox можно сделать так: повесить обработчик на событие window.onunload и в нём удалить куку.

sashgera 07.07.2012 16:25

Нужно чтобы cookie удалялись сразу после закрытия div или перезагрузки/переходе страницы. Дата истечения, когда удалить cookies не подходит.

Deff 07.07.2012 16:38

sashgera,
я дал Вам ссылку на рабочую функцию куков с пояснениями

sashgera 07.07.2012 17:03

oneguy,
window.onunload кажется, срабатывает при переходе на другую страницу, мне это не подходит. Нужно чтобы cookie удалялась сразу после закрытия div. Так все-таки, может кто ответит - почему в моем случае Мозила не удаляет куки?

sashgera 07.07.2012 17:22

Deff,
Перешел по Вашей ссылки и все внимательно прочитал. Я новичок, слабо разбираюсь в javascript. Я выложил Java-скрипт, может быть, Вы укажете, где именно ошибка? Во всех браузерах срабатывает, кроме Мозилы.

oneguy 07.07.2012 20:32

Цитата:

Сообщение от sashgera
Так все-таки, может кто ответит - почему в моем случае Мозила не удаляет куки?

Это не ошибка, Firefox перед закрытием браузера сохраняет состояния вкладок и при повторном запуске восстанавливает эти состояния, при этом считает, что во вкладках продолжается предыдущая сессия. В стандарте написано, что если в куке не указываются атрибуты Expires и Max-age, то кука должна храниться до конца текущей сессии, при этом браузеры могут по-своему определять конец сессии.

Deff 07.07.2012 20:38

Просто ставить кук на время (*тогда траблов не возникает,
Хотя можно ставить два кука на текущую сессию и на длинное время -
тестируем наличия кука по одновременному наличию кука сессии и наличию кука по времени
а стираем лишь кук по длинному времени

oneguy 07.07.2012 20:42

sashgera, я вас не совсем понял. Вы пишете:
Цитата:

Сообщение от sashgera (Сообщение 187051)
Нужно чтобы cookie удалялись сразу после закрытия div или перезагрузки/переходе страницы.

Цитата:

Сообщение от sashgera (Сообщение 187064)
oneguy,
window.onunload кажется, срабатывает при переходе на другую страницу, мне это не подходит.

Ещё вопрос: какой div вы имеете ввиду? Рекламный баннер?


Часовой пояс GMT +3, время: 15:48.