Комментарии 11
var child=open(«ChildForm.html», «Child Form», «toolbar=no,directories=no,menubar=no», true);
child.dataArray=dataArray;
* This source code was highlighted with Source Code Highlighter.
Такой вариант не прокатит?
child.dataArray=dataArray;
* This source code was highlighted with Source Code Highlighter.
Такой вариант не прокатит?
0
Ага, сталкивался с такой проблемой, копировал массив поэлементно. Сложные объекты всё же передаются по ссылке и гц не учитывает межоконное взаимодействие.
+1
Объект Array в разных окнах разный. Можно сказать, что для каждого окна поднимается свой JS-движок (хотя это не так на самом деле).
Посмотрите, например, как в jQuery реализован метод isArray
Он так сделан не зря :)
Посмотрите, например, как в jQuery реализован метод isArray
isArray: function( obj ) { return toString.call(obj) === "[object Array]"; }
Он так сделан не зря :)
+1
Не совсем, мне кажется, о том речь. массив передает все значения в дочернее окно, но при этом становится объектом, т. е. теряет свои признаки массива.
0
Простите, но вы плохо знаете JS.
Массив, как и все остальные объекты, «наследуется» от Object
В вашем случае, дело как раз в том, что если вы создаете массив в одном окне, то в другое оно передается как массив. Но в то же время не является «производным» от объекта Array второго окна, поэтому instanceof и не работает
Массив, как и все остальные объекты, «наследуется» от Object
var a = [1,2,3] // массив a.myvar = 'ololo' // это не мешает ему быть объектом a instanceof Array // true a instanceof Object // true a[1] // -> 2 a['myvar'] // -> 'ololo'
В вашем случае, дело как раз в том, что если вы создаете массив в одном окне, то в другое оно передается как массив. Но в то же время не является «производным» от объекта Array второго окна, поэтому instanceof и не работает
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Проблема c массивами javascript в IE при межоконном взаимодействии