[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как получить ссылку на DOMWindow ?
Invis1ble
Из одного окна создается другое с помощью window.open()
Как можно получить ссылку на созданный объект после перезагрузки родительского окна?
Есть такой вариант:
var obj = window.open('', name);

но при отсутствии объекта создается пустое окно... Как этого можно избежать?



Спустя 13 часов, 38 минут, 59 секунд (17.04.2012 - 10:05) bodja написал(а):
Думаю никак,после перезагрузки все очищается.

Спустя 5 минут, 2 секунды (17.04.2012 - 10:10) Invis1ble написал(а):
Цитата
Думаю никак,после перезагрузки все очищается.

но ведь данный трюк
var obj = window.open('', name);
работает, хоть и не совсем так, как нужно...

неужели прийдется открывать его и получать какое-либо свойство и если оно пустое - закрывать... бред какой-то...

Спустя 11 минут, 30 секунд (17.04.2012 - 10:22) bodja написал(а):
ну так вам же нужно получить доступ к уже созданому окну а не новому,в даном случае вы получаете ссылку на новое окно.
Я пробовал сохранить ссылку через window.name у меня даже этот номер не прошел,строка проходит ,а вот обьект нет,eval не помог.
Может есть еще какой хитрый способ незнаю.


В принципе можно попробовать проверять на обновление родительского окна из дочернего,ссылка на родительское окно в нем сохраняется ,если опять таки не перезагружать,
и в случае обновления передать ему ссылку на себя,но это больше похоже на костыль.

Спустя 4 минуты, 52 секунды (17.04.2012 - 10:27) Invis1ble написал(а):
Цитата
ну так вам же нужно получить доступ к уже созданому окну а не новому,в даном случае вы получаете ссылку на новое окно.

да
Цитата
Я пробовал сохранить ссылку через window.name у меня даже этот номер не прошел,строка проходит ,а вот обьект нет,eval не помог.

хак с "локальным кэшем"? вчера мельком читал про него, надо будет попробовать smile.gif
Цитата
В принципе можно попробовать проверять на обновление родительского окна из дочернего,ссылка на родительское окно в нем сохраняется ,если опять таки не перезагружать,
и в случае обновления передать ему ссылку на себя,но это больше похоже на костыль.

как вариант... лучше я пока не вижу способа

Спустя 5 минут, 56 секунд (17.04.2012 - 10:32) bodja написал(а):
ЗЫ Ну а в целом переходите полностью на аякс и дом - убьете целую кучу проблем со статичностью.
Будут вам окошки и скорость и все сессии у юзера и куча интерактивности.

Спустя 6 минут, 32 секунды (17.04.2012 - 10:39) Invis1ble написал(а):
bodja
Цитата
Ну а в целом переходите полностью на аякс и дом - убьете целую кучу проблем со статичностью.
Будут вам окошки и скорость и все сессии у юзера и куча интерактивности.

да это понятно, я пытаюсь сделать так, чтобы и с отключенным js сайт функционировал

Спустя 6 минут, 30 секунд (17.04.2012 - 10:45) bodja написал(а):
Да уже давно не в том веке живем,оставте это для параноиков.
Достаточно глянуть какие сейчас современные шаблоны делают.

Спустя 7 часов, 23 минуты, 49 секунд (17.04.2012 - 18:09) Invis1ble написал(а):
вобщем через setInterval все-таки сделал, других вариантов более вменяемых не нашел
setInterval(function() { window.opener.cart = window; }, 200);


PS. Кстати, попутно вопрос:
что оптимальней с точки зрения производительности - передавать анонимную ф-цию, или создать обычную?
Вопрос чисто теоретический, понятно что разница в скорости будет стремиться к нулю :)

Спустя 57 минут, 22 секунды (17.04.2012 - 19:07) bodja написал(а):
Естественно быстрее использовать калбек на уже созданую функцию,так как это фактически указатель на нее,чем каждый раз создавать новую.
Просто в конструкциях setInterval и setTimerOut применяются анонимные функции из за невозможности передать аргумент вместе с вызовом функции,поэтому передают аргументы в качестве кода в теле анонимной функции.

Спустя 13 минут, 18 секунд (17.04.2012 - 19:20) Invis1ble написал(а):
bodja
Цитата
Просто в конструкциях setInterval и setTimerOut применяются анонимные функции из за невозможности передать аргумент вместе с вызовом функции,поэтому передают аргументы в качестве кода в теле анонимной функции.

решил проверить, такой код работает:
function f(a) { console.log(a); }
setInterval(f, 1000, 'test');

setTimeout тоже работает

Спустя 18 минут, 50 секунд (17.04.2012 - 19:39) bodja написал(а):
Значит я что то пропустил в W3Schools нигде не сказано про третий аргумент.
Точнее сказано в setInterval,но там третим аргументом идет язык.
http://www.w3schools.com/js/js_timing.asp
http://www.w3schools.com/jsref/met_win_setinterval.asp

Возможно ,что то изменилось в лучшую сторону.
ЗЫ Действительно,проверил в старых браузерах,не работает.

Спустя 6 минут, 55 секунд (17.04.2012 - 19:46) Invis1ble написал(а):
да, ты прав. Работает не везде (насколько я понял, не работает в нашем любимом браузере smile.gif)


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.