Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.05.2009, 21:48
Новичок на форуме
Отправить личное сообщение для ec_stasis Посмотреть профиль Найти все сообщения от ec_stasis
 
Регистрация: 28.05.2009
Сообщений: 3

Передача данных окну-детенышу
Есть код
var win = window.open('url.php', 'mywindow', 'trata');
win.varName = 'Значение';



в большистве броузеров это работает, т.е. в документе 'url.php' в переменной varName я получаю значение 'Значение'.
Но не в Опере. Там получается, что переменная не определена.

Как сделать чтобы опера "увидела" эту передаваемую переменную?
Ответить с цитированием
  #2 (permalink)  
Старый 29.05.2009, 00:37
Аспирант
Отправить личное сообщение для Pattern Посмотреть профиль Найти все сообщения от Pattern
 
Регистрация: 13.05.2009
Сообщений: 37

Не знаю, как у кого, но у меня лично с оперой очень натянутые отношения.
А по вопросу... Чисто теория... А сделать наоборот не получится, всмысле, получить данные окна-родителя?
Ответить с цитированием
  #3 (permalink)  
Старый 29.05.2009, 00:43
Новичок на форуме
Отправить личное сообщение для ec_stasis Посмотреть профиль Найти все сообщения от ec_stasis
 
Регистрация: 28.05.2009
Сообщений: 3

Наоборот не хотелось бы делать, т.к. для этого нужно создавать глобальные переменные. Приложение объемное, не хочется разводить бардак.
Да и для разных окон могут понадобиться разные данные.

Т.е. это конечно решение, но не самое лучшее.
Ответить с цитированием
  #4 (permalink)  
Старый 29.05.2009, 00:48
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Экспериментируйте. Попробуйте выставлять переменную после загрузки дочернего окна. В крайнем случае можно через строку запроса передать.
Ответить с цитированием
  #5 (permalink)  
Старый 01.06.2009, 00:26
Аспирант
Отправить личное сообщение для Pattern Посмотреть профиль Найти все сообщения от Pattern
 
Регистрация: 13.05.2009
Сообщений: 37

Сообщение от ec_stasis Посмотреть сообщение
Наоборот не хотелось бы делать, т.к. для этого нужно создавать глобальные переменные. Приложение объемное, не хочется разводить бардак.
Ну тут вовсе не обязательно хранить глобальную переменную явным образом. Это может быть объект-хранитель данных.
var storage={
  param1: 'anyval1',
  param2: 'anyval1',
  ...,
  paramN: 'anyvalN'
};

Всё будет храниться в единой "базе данных" без всякого бардака. Всё зависит от организации хранимых данных.
Сообщение от ec_stasis Посмотреть сообщение
Да и для разных окон могут понадобиться разные данные.
Это никакого значения не имеет. Можешь напрямую обращаться к свойствам объекта, можешь написать функцию что то наподобии
var storage={
    ...
    setParam: function(p,v){
        if(this[p]&&v)
            this[p]=(typeof this[p]==='string')?v.length>0?v:'':parseInt(v);
    }
};

или если требуется какая то новая переменная
storage.newparam='newval';

Сообщение от ec_stasis Посмотреть сообщение
Т.е. это конечно решение, но не самое лучшее.
Боюсь, для реализации кроссбраузерности не избежать решений тех, которые являются "не самыми лучшими". Единого стандарта пока нет... И боюсь что вряд ли он когда-либо появится.
Ответить с цитированием
  #6 (permalink)  
Старый 01.06.2009, 02:00
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от Pattern Посмотреть сообщение
typeof this[p]==='string'
typeof всегда возвращает строку, поэтому строгое равенство без приведения типов здесь не нужно, всегда строка со строкой сравнивается.
Ответить с цитированием
  #7 (permalink)  
Старый 01.06.2009, 02:24
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

http://bash.org.ru/quote/354952
вспомнилось, не в обиду
Ответить с цитированием
  #8 (permalink)  
Старый 01.06.2009, 03:49
Аспирант
Отправить личное сообщение для Pattern Посмотреть профиль Найти все сообщения от Pattern
 
Регистрация: 13.05.2009
Сообщений: 37

согласен с недочетом... чёт припарился... =)
Ответить с цитированием
  #9 (permalink)  
Старый 03.06.2009, 01:33
Новичок на форуме
Отправить личное сообщение для ec_stasis Посмотреть профиль Найти все сообщения от ec_stasis
 
Регистрация: 28.05.2009
Сообщений: 3

Вобщем пришлось сделать "наоборот", т.е. из детеныша обращаться к родителю и брать данные из его свойств.

Количество детенышей ограничил количеством "один". Это даже логичнее в моей ситуации.

Данное решение пришлось применить по еще одной причине: при рефреше окно-детеныш теряет полученные при открытии данные. Пробовал закрывать окно при рефреше, но там вылезают новые косяки.

Можно было брать параметры из location'а, но это лишний код, преимуществ не дающий.

Всем спасибо за комментарии.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FancyBox или передача данных greatilya Общие вопросы Javascript 12 28.01.2014 23:38
Скрытая передача данных из JavaScript Xero201 Общие вопросы Javascript 4 27.03.2009 01:13
Передача и сохранение данных в фаил RX200 Общие вопросы Javascript 7 28.02.2009 14:00
Передача данных в скрипт Votved Общие вопросы Javascript 2 07.07.2008 18:30
передача данных между формами Yurii Общие вопросы Javascript 2 30.04.2008 20:52