Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Перезагрузить и закрыть (https://javascript.ru/forum/misc/30270-perezagruzit-i-zakryt.html)

logi 30.07.2012 02:04

Перезагрузить и закрыть
 
Здравствуйте! Подскажите, как добавить в кнопку функцию перезагрузки окна перед закрытием. Простите, вообще не бум-бум, но весьма срочно надо. :)

<input type="button" value="Закрыть" onClick="window.close();" />

Deff 30.07.2012 02:12

<input type="button" value="Закрыть" onClick="location.reload();window.close();" />

logi 30.07.2012 02:31

В этом случае происходит только закрытие.
Есть вот отдельная работающая перезагрузка. Как можно их вместе связать?

<input type="button" value="Перезагрузка" onClick="ReloadButton()">
<script>
function ReloadButton()
{
location.href="";
}
</script>

Deff 30.07.2012 02:55

logi,
Пробуйте так:
<script type="text/javascript">
Myhash='#%%%%%%%%%%%%%%55'
if(location.hash==Myhash)window.close();

function ReloadButton() {
 location.hash=Myhash;
 location.reload();
 }
</script>

<input type="button" value="Перезагрузка" onClick="ReloadButton()">

logi 30.07.2012 03:14

Не работает.

Deff 30.07.2012 04:11

logi,
У меня в Опере работает Пример - http://hostjs-mybb2011.narod.ru/faiko2.htm

lord2kim 30.07.2012 10:28

Deff, в FF не робит window.close() в таких случаях...

bes 30.07.2012 11:24

Цитата:

Сообщение от logi
Подскажите, как добавить в кнопку функцию перезагрузки окна перед закрытием.

Можно поинтересоваться, зачем это нужно?

Deff 30.07.2012 11:36

lord2kim,
Ну там нун настраивать настройки приватности,
В ИЕ так - браузер спрашивает
Вообще закрывать без полиции браузера можно лишь открытые скриптом окна

bes 30.07.2012 11:45

Цитата:

Сообщение от Deff
Вообще закрывать без полиции браузера можно лишь открытые скриптом окна

хром не из их числа

logi 30.07.2012 12:20

[quote=Deff] http://hostjs-my
Цитата:

Сообщение от Deff
logi,
У меня в Опере работает Пример - http://hostjs-mybb2011.narod.ru/faiko2.htm

Deff, виноват, видимо, ошибся при копировании вашего скрипта. Спасибо огромное! Работает шикарно в Опере и Хроме. В ФФ, как писал lord2kim, не закрывает окно и даже не предлагает - нужно что-то придумать... В IE у меня пока не работает сам продукт, которому это фишка предназначается, поэтому проверить пока не могу.
Еще для информации. Закрываемое окно является дочерним, открытым скриптом из родительского. Закрытие дочернего с перезагрузкой родительского - этого сколько хочешь, а этот случай вынудил обратиться к вам.

bes 30.07.2012 12:26

Цитата:

Сообщение от logi
В ФФ, как писал lord2kim, не закрывает окно и даже не предлагает - нужно что-то придумать..

предлагаю вынудить разработчиков FF это отменить :)
Цитата:

Сообщение от logi
Еще для информации. Закрываемое окно является дочерним, открытым скриптом из родительского. Закрытие дочернего с перезагрузкой родительского - этого сколько хочешь, а этот случай вынудил обратиться к вам.

Цитата:

Сообщение от logi
В IE пока не работает сам продукт, которому это фишка предназначается, поэтому проверить пока не могу.

Так что за фишка?

bes 30.07.2012 13:08

<body onbeforeunload="return 'закрыть это окно'">
<button>click</button>

<script>
document.body.children[0].onclick = function () {
	var win = window.open();
	var str = '<body onbeforeunload = "return \'закрыться этом вслпывающему окну?\'">';
	str += '<button onclick="location.reload();alert(\'закрываемся\'); window.close();">reload & close</button>';
	win.document.write(str);
}
</script>

logi 30.07.2012 13:16

Цитата:

Сообщение от bes
Можно поинтересоваться, зачем это нужно?

Есть хак мультизагрузки вложений для форума на vBulletin. После загрузки вложений в дочернем окне срабатывает фейк-сабмит перезагрузки, который отдает отображение загруженных файлов в открытый редактор сообщения (родительское окно). Все бы ничего, но применение этого "костыля" лишило нескольких важных функций. Поэтому и потребовалось убрать костыль, а функцию фейк-сабмита подвесить на кнопку закрытия окна.
Собственно, вот тема и начало обсуждения этого с автором хака: http://vbsupport.org/forum/showthrea...699#post396699

Deff 30.07.2012 13:22

logi,
делайте сабмит с отправкой ответа в скрытый фрейм - и будет щастье

http://htmlbook.ru/html/form (см target

logi 30.07.2012 13:47

Цитата:

Сообщение от Deff
logi,
делайте сабмит с отправкой ответа в скрытый фрейм - и будет щастье

http://htmlbook.ru/html/form (см target

Deff, Если не сложно, можно пример для моего случая? Мне очень долго разбираться, измучился уже весь ((

Deff 30.07.2012 13:52

logi,
Собственно ничего сложного в отправляемой форме - прописываете изначально target
<form target="имя окна">...</form>
Где "имя окна" - имя пустого- скрытого заготовленного фрейма

Пример:
<div style="display:none">
 <iframe name="myifarame" width="0" height="0">
</div>

<form ... target="myifarame">...</form>


Результаты отправки формы будут возвращены во фрейм

logi 30.07.2012 14:14

Не понимаю (( Каким должно быть имя окна? Куда здесь кнопочку закрытия прописать..?

Deff 30.07.2012 14:24

logi,
Ну смотрите на демо
в таргет формы - прописано имя скрытого фрейма => myifarame

Deff 30.07.2012 14:25

Цитата:

Сообщение от logi
Не понимаю (( Каким должно быть имя окна? Куда здесь кнопочку закрытия прописать..?

открывацо ничо не будет - поэтому и закрывать ничо не надо - можно по onload фрейма - просто удалить его со страницы (*если есть обоснованные причины - что оно Вам мешает

logi 30.07.2012 14:39

Deff, так это в родительскую страницу прописывать или в дочернюю? В какое место? Что вместо многоточий?

Deff 30.07.2012 14:41

Цитата:

Сообщение от logi
Deff, так это в родительскую страницу прописывать или в дочернюю? В какое место? Что вместо многоточий?

Форма - Ваша вместо многоточий все Ваше - она на исходной родительской
- Дочерней страницы - не будет - она будет во фрейме

Вы сказали - при отправке формы возникало дочернее окно - с ним и проблемы - мну предложил заменить дочернее окно -фреймом

logi 30.07.2012 14:48

bes, код встраиваю, но такого, как на примере, не происходит. Что не так делаю? Объясните на пальцах, пожалуйста.

logi 30.07.2012 15:06

Deff, прошу добить меня ))
Скрипт кнопки, открывающей дочернее окно, выглядит так:
<script type="text/javascript">
			<!--
			var newpost_attachmentbit = '$newpost_attachmentbit';
			vB_Attachments = new vB_Attachment('attachlist', '$editorid');
			$attachment_js

document.write('<input type="button" id="manage_swfattachments_button" class="button" tabindex="1" style="font-weight:normal" value="$vbphrase[kr_swfattachment_multiupload]" title="$vbphrase[kr_swfattachment_upload_swfuploader]" onclick="vB_Attachments.open_window(\'swfattachment.php?$session[sessionurl]$attachurl&amp;poststarttime=$poststarttime&amp;posthash=$posthash\', 600, 600, \'$postid\')" />');
			//-->
			</script>

Как встроить это в предлагаемое вами?

Deff 30.07.2012 15:20

logi,
Мну предлагает вернуться к изначальному вопросу - я плясал от него - зачем Вам открытие окна на новой вкладке ?
Откройте его фреймом по кнопке, на текущей странице (оформить можно так же, как якобы модальное окно - тень, затенение и всё такое)

bes 30.07.2012 15:25

Цитата:

Сообщение от logi
bes, код встраиваю, но такого, как на примере, не происходит. Что не так делаю? Объясните на пальцах, пожалуйста.

Ну в этом коде открывается дочернее окно, в его код прописывается кнопка с обработчиком, по нажатию которой происходит перезагрузка этого дочернего окна и его закрытие (alert() и onbeforeunload только для проверки, location.reload в обработчике перезагружает дочернее окно, а потом оно закрывается методом close()), если вы делаете то же самое у себя в коде, то всё должно получиться.

Deff 30.07.2012 15:32

bes,
Всё получаецо - ток не юзабельно - посколь Вопросы брауза портят всю малину - нун плясать от исходного, - 'Зачем open window'

bes 30.07.2012 15:44

Deff, в примере вопросы возникали как проверка ухода со страницы (для проверки, что перезагрузка произошла и чтоб сразу не закрылось окно, иначе было бы не заметно, что произошло), а при закрытии дочерних окон созданных в исходном коде вопросов вроде не возникает, возникают только при закрытии исходного окна (и то только в IE вроде, в FF вообще не работает), а это вроде ему как раз не нужно (у него дочернее нужно закрывать, если, конечно, я правильно понял, что при текущем треде не факт :) ).

logi 30.07.2012 15:44

Deff, bes, ребята, ну пропишите же в ваши варианты сами то, что нужно, пожалуйста. Чтобы я только скопипастил (а что делать, обучаться придеца после..)). Я же дал вам все коды...

Deff 30.07.2012 16:02

Цитата:

Сообщение от logi
(а что делать, обучаться придеца после..)). Я же дал вам все коды...

ЫЫ - тада чуть позжа ... так бы и сказали...

bes 30.07.2012 16:11

Цитата:

Сообщение от logi
Deff, bes, ребята, ну пропишите же в ваши варианты сами то, что нужно, пожалуйста. Чтобы я только скопипастил (а что делать, обучаться придеца после..)). Я же дал вам все коды...

Ну, во-первых, вам тут бесплатно помогают, за вас делать никто не собирается, если хотите готовый скрипт с нуля, вам в раздел Работа, во-вторых, лично я не заметил этих всех кодов.
Из того, что представлено, лично мне не понятно, что там происходит (вы прописываете в исходный документ кнопку, а наверное хотели бы открыть дочернее окно с этой кнопкой, если так то сначала создаёте окно (например, win = window.open()), а потом записываете код этого окна, в том числе и кнопку с обработчиком (win.document.write('код кнопки и т.п') в обработчик этой кнопки и добавляете location.reload(); window.close())
Ну или так как открываете страницу в этом всплывающем окне, то код этой страницы уже может содержать кнопку с обработчиком из location.reload(); window.close(), тогда вообще ничего не нужно

logi 30.07.2012 21:10

Цитата:

Сообщение от bes (Сообщение 192965)
Ну, во-первых, вам тут бесплатно помогают, за вас делать никто не собирается, если хотите готовый скрипт с нуля, вам в раздел Работа, во-вторых, лично я не заметил этих всех кодов.

Да я совсем не против заплатить немного :) но думал, что здесь все значительно проще, и вопрос решается парой строчек кода, которые я просто не смог нагуглить. Собственно, Deff изначально дал отличный рецепт, вот только FF подвел, остальные браузеры на ура!
Из того, что я дал - это скрипт кнопки, который открывает второе окно (загрузка вложений). Что еще нужно было? Ваши элементарные (для вас) вопросы и термины наталкиваются на мое непонимание, поэтому и прошу, если можно, живые примеры скриптов, которые я смогу встроить и посмотреть. Простите, если что не так. :)

bes 30.07.2012 22:12

Цитата:

Сообщение от logi
Из того, что я дал - это скрипт кнопки, который открыват второе окно (загрузка вложений). Что еще нужно было? Ваши элементарные (для вас) вопросы и термины наталкиваются на мое непонимание, поэтому и прошу, если можно, живые примеры.

Я хочу сказать, что нужно подробно описать, что хотите получить в итоге (по тому, что приведено, не понятно, а я не экстрасенс).
Есть окно, в него загружена исходная страница, из неё по нажатию (или может быть как-то по-другому) открывается другое окно, в которое загружается страница со вложением (что за вложение тоже не понятно).
Надо сделать то-то и то-то, то есть ещё раз подробно опишите процесс, а то долго уже тут говорим, толку мало (я так толком и не понял, что нужно, Deff, не знаю, наверное понял :) )

kerk 30.07.2012 23:27

весь процесс, можно посмотреть прямо здесь, на этом форуме
переходим в расширенный режим ответа по кнопке "ответить" или "расширенный режим"
там есть такая кнопка "Управление вложениями"
когда клацаем на нее, открывается другое окно с формой загрузки файлов
после загрузки файла в дочернем окне, в родительском обновляется список загруженных файлов
мой скрипт так же открывает новое окно, но там нет формы загрузки файлов <form>, там пхп скрипт подгружает SWFUploader, который грузит несколько файлов одновременно с отображением статистики загрузки, как то: процент залитого на сервак, прогресс бар и прочие плюшки
так вот, суть в том, что в обычном загрузчике воблы, после загрузки файла, дочернее окно обновляется и в родительском появляется загруженный файл (список)
в моем скрипт дочернее окно нЕ обновляется, и что бы появился список загруженных файлов, я ничего не смог придумать, как поставить костыль из фейк-сабмита формы со списком загруженных файлов
вызов сабмита идет в одном из файлов библиотеки SWFUpload-а - handlers.js
можете глянуть сорс страницы расширенного ответа и страницы загрузки, там есть все, что бы понять как это работает =)

Deff 31.07.2012 01:07

Это похожий Вариант решения ?
<script type="text/javascript">
			<!--
function Klick(c) {
 var b = document.getElementById('wrpFrame').style;
 var a=document.getElementById('form_frame');
 if(c.alt==0){c.alt=1;c.value="Закрыть"
   a.src=a.getAttribute('data');
   b.display='block';
 }else {a.src='';b.display='none';c.value="multiupload";c.alt=0;}
}

document.write('<input type="button" value="multiupload" alt="0" onclick="Klick(this)" />\
<div id="wrpFrame"  style="display:none">\
  <iframe id="form_frame" width=900 height=600 name="form_frame" src="" data="http://uploads.ru/"></iframe>\
</div>');
			//-->
</script>

Deff 31.07.2012 01:12

Пояснения - открываете свою форму загрузки во фрейме - производите нужные действия - закрываете
* можно открыть повторно;

logi 31.07.2012 01:53

Хочу вернуться...

<input type="button" value="Закрыть" onClick="location.reload();window.close();" />

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

Deff 31.07.2012 01:57

logi,
Чем фрейм не понравился ?(В чем сомнения ?
По любому действия с вкладкой упираюца в origin policy

logi 31.07.2012 02:16

Про фрейм kerk скажет, он у нас начальник :)

bes 31.07.2012 11:52

Цитата:

Сообщение от logi
Про фрейм kerk скажет, он у нас начальник

Начальник подключился, а я сначала подумал kerk === logi :) (kerk, видимо как начальник, дал понятное описание того, что происходит. :))

Цитата:

Сообщение от logi
<input type="button" value="Закрыть" onClick="location.reload();window.close();" />
В этом случае окно просто закрывается. Может из-за того, что не успевает сработать первое? А если прописать временной интервал задержки выполнения второй функции..?

Ну почему не успевает, я для этого и ставил alert() и onbeforeunload(), чтобы проверить, работает или нет (хотя..).
Если будете прописывать после открытия дочернего окна document.write, то он просто уничтожит (перепишет) страницу, поэтому страницу лучше поместить во фрейм, кнопку в форму, по нажатию будет submit и перезагрузка.

<button id="but">click</button>
<script>
document.getElementById('but').onclick = function () {
	var win = window.open('index4.htm'); 
	var address = 'http://javascript.ru/';
	var str = '<body onbeforeunload = "return \'закрываемся\'">';
	str += '<iframe width="100%" height="50%" src=' + address + '></iframe>';
	str += '<form параметры><input name="submit" type="submit" value="click"></form>';
	win.document.write(str);
}
</script>


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