20.08.2012, 13:49
|
Новичок на форуме
|
|
Регистрация: 17.03.2011
Сообщений: 9
|
|
window.opener.location.reload();
С родительского окна открываетися дочернее
но в данном случаи в дочернем при отправке формы окно НЕ ЗАКРЫВАЕТСЯ
для закрытия окна есть специальная кнопа "закрыть"
которая имеет вид <input type="button" value="Закрыть" onClick="window.opener.location.reload();window.cl ose();">
если закрывать сразу кнопкой - то родительское окно обновляется, но если сохранить форму и нажать закрыть обновления не происходит. Я так подозреваю что после обновления родитель становится вовсе не родителем.
Вопрос как заставить обновлять страницу родителя после закрытия дочернего элемента при любых раскладах - было сохранение формы в дочернем элементе/не было/было 5-ть раз и т.д.
|
|
20.08.2012, 14:44
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Gigo,
1. На родителе ставим таймер(setInterval при открытии дочернего Окна),
2. При закрытии дочернего окна ставим(из дочернего окна) кук, что окно закрылось
3. Родитель по таймеру(setInterval) тестит куки - при нахождениии кука - стирает его и обновляецо
Последний раз редактировалось Deff, 20.08.2012 в 14:47.
|
|
20.08.2012, 15:16
|
Новичок на форуме
|
|
Регистрация: 17.03.2011
Сообщений: 9
|
|
идея, а менее извращенный вариант?
переназначить родителя вручную
обратиться к странице родительской через какойто атрибут (по аналогии с фреймами)
может глупости пишу, но в JS не силен
|
|
20.08.2012, 15:54
|
Новичок на форуме
|
|
Регистрация: 17.03.2011
Сообщений: 9
|
|
почти получилось
есть функции (обе рабочие)
function setCookie (name, value, expires, path, domain, secure) {
document.cookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}
function getCookie(name) {
var cookie = " " + document.cookie;
var search = " " + name + "=";
var setStr = null;
var offset = 0;
var end = 0;
if (cookie.length > 0) {
offset = cookie.indexOf(search);
if (offset != -1) {
offset += search.length;
end = cookie.indexOf(";", offset)
if (end == -1) {
end = cookie.length;
}
setStr = unescape(cookie.substring(offset, end));
}
}
return(setStr);
}
родительское окно
function test_open_window(){
op = getCookie("open");
if(op==0){
setCookie("open", "1");
window.location.reload();
}
}
setInterval(test_open_window, 1000);
дочернее окно
в хеаде
setCookie("open", "1");
в конце
<input type="button" value="Закрыть" onClick="setCookie('open','0');alert(getCookie('op en'));window.close();">
Если сразу нажимаю закрыть значение меняется на 0 и обновление происходит, если сохраняю форму и закрываю окно значение кука = 1
т.е. setCookie('open','0') не работает - почему?
|
|
20.08.2012, 16:12
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Gigo,
Нун ставить время хранение - иначе куки на сесию, до закрытия окон
setCookie("open",1,2*60*60*1000); .//воть на два часа//цифры можно без кавычек
т.е. setCookie('open','0') не работает - почему? 0 и false - не работают - така фукция - полная версия длинная
возьмите 1 и 2
стирание кука setCookie("open",true,-1);
Все таки лучше ставить кук и стирать
cтавим
setCookie("open",true,2*60*60*1000);
стираем
setCookie("open",true,-1);
Проверка наличия кука
if(getCookie("open")) {
//Тут что-то;
}
Последний раз редактировалось Deff, 20.08.2012 в 16:25.
|
|
20.08.2012, 17:09
|
Новичок на форуме
|
|
Регистрация: 17.03.2011
Сообщений: 9
|
|
всеравно херня какая то происходит
кук не удаляется
function close_window(){
setCookie("open",true,-1);
alert(getCookie("open"));
window.close();
}
возвращает true
|
|
20.08.2012, 17:28
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
setсookie("open",true,-20); Так - тож не удаляется ?
Со стиранием ошибся; Вроде так:
<script type="text/javascript">
function setcookie(a,b,c) {if(c){var d = new Date();d.setTime(d.getTime()+c);}if(a && b) document.cookie = a+'='+b+(c ? '; expires='+d.toUTCString() : '');else return false;}
function getcookie(a) {var b = new RegExp(a+'=([^;]){1,}');var c = b.exec(document.cookie);if(c) c = c[0].split('=');else return false;return c[1] ? c[1] : false;}
//Cтавим кук
setcookie("open",true,2*60*60*1000);
alert("Cтавим кук=>"+getcookie("open"));
//стираем Кук
setcookie("open",'false',-23);
alert("стираем и читаем Кук=>"+getcookie("open"));
</script>
Последний раз редактировалось Deff, 20.08.2012 в 17:49.
|
|
21.08.2012, 01:43
|
Новичок на форуме
|
|
Регистрация: 17.03.2011
Сообщений: 9
|
|
нашел где грабля была
скрипт все правильно работает.
дочернее окно отрывается как http://...
а при пересохранении http://www... - считает как разные домены и пипец
если подскажешь как на весь домен куки поставить буду оч. благодарен, а то мозг начинает шалить, пойду спать
|
|
21.08.2012, 01:48
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Gigo,
Воть Тады более полный Вариант куков с доменом =>
//================= БИБЛИОТЕКА КУКИСОВ ============== //
// Библиотека для кукисов
function setCookie(name, value, expires, path, domain, secure) {
if (!name || !value) return false; //alert("HELLO>>"+value)
var today = new Date();
today.setTime( today.getTime() );
var expires_date = new Date( today.getTime() + (expires) );
var str = encodeURIComponent(name) + '=' + encodeURIComponent(value);
if (expires) str += '; expires=' + expires_date.toGMTString();
if (path) str += '; path=' + path;
if (domain) str += '; domain=' + domain;
if (secure) str += '; secure';
document.cookie = str;
return true;
}
function getCookie(name) {
name= encodeURIComponent(name)
var pattern = "(?:; )?" + name + "=([^;]*);?";
var regexp = new RegExp(pattern,"mg");
if (regexp.test(document.cookie))
return decodeURIComponent(RegExp["$1"]);
return false
}
function deleteCookie( name, path, domain ) {
if ( getCookie( name ) ) name= encodeURIComponent(name);document.cookie = name + '=' +
( ( path ) ? ';path=' + path : '') +
( ( domain ) ? ';domain=' + domain : '' ) +
';expires=Thu, 01-Jan-1970 00:00:01 GMT';
}
//End//Библиотека Кукисов
//===================================================================//
Последний раз редактировалось Deff, 21.08.2012 в 01:52.
|
|
|
|