Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   window.opener.location.reload(); (https://javascript.ru/forum/css-html/30914-window-opener-location-reload-%3B.html)

Gigo 20.08.2012 13:49

window.opener.location.reload();
 
С родительского окна открываетися дочернее
но в данном случаи в дочернем при отправке формы окно НЕ ЗАКРЫВАЕТСЯ
для закрытия окна есть специальная кнопа "закрыть"
которая имеет вид <input type="button" value="Закрыть" onClick="window.opener.location.reload();window.cl ose();">
если закрывать сразу кнопкой - то родительское окно обновляется, но если сохранить форму и нажать закрыть обновления не происходит. Я так подозреваю что после обновления родитель становится вовсе не родителем.
Вопрос как заставить обновлять страницу родителя после закрытия дочернего элемента при любых раскладах - было сохранение формы в дочернем элементе/не было/было 5-ть раз и т.д.

Deff 20.08.2012 14:44

Gigo,
1. На родителе ставим таймер(setInterval при открытии дочернего Окна),
2. При закрытии дочернего окна ставим(из дочернего окна) кук, что окно закрылось
3. Родитель по таймеру(setInterval) тестит куки - при нахождениии кука - стирает его и обновляецо

Gigo 20.08.2012 15:16

идея, а менее извращенный вариант?
переназначить родителя вручную
обратиться к странице родительской через какойто атрибут (по аналогии с фреймами)
может глупости пишу, но в JS не силен

Deff 20.08.2012 15:26

Gigo,
Куки ссылка => http://javascript.ru/forum/misc/2942...tml#post184541
setInterval = ccылка => http://javascript.ru/setInterval

В принципе скрипт в четыре строки (не считая coocie функции

Gigo 20.08.2012 15:54

почти получилось
есть функции (обе рабочие)
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') не работает - почему?

Deff 20.08.2012 16:12

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")) {
//Тут что-то;
}

Gigo 20.08.2012 17:09

всеравно херня какая то происходит
кук не удаляется
function close_window(){
setCookie("open",true,-1);
alert(getCookie("open"));
window.close();
}
возвращает true

Deff 20.08.2012 17:28

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>

Gigo 21.08.2012 01:43

нашел где грабля была
скрипт все правильно работает.
дочернее окно отрывается как http://...
а при пересохранении http://www... - считает как разные домены и пипец
если подскажешь как на весь домен куки поставить буду оч. благодарен, а то мозг начинает шалить, пойду спать

Deff 21.08.2012 01:48

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//Библиотека Кукисов

//===================================================================//


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