2009-10-16 7 views
1

Je codage en fait un cas où une donnée de transfert de fenêtre pop-up de l'enfant à la fenêtre parent comme:Utiliser la classe Array dans les fenêtres parent et enfant (javascript question)

var childArrayData = new Array(); 
childArrayData[0] = 'Data text1'; 
childArrayData[1] = 'Data text2'; 
childArrayData[2] = 'Data text3'; 
window.opener.parentVariable = childArrayData; 

j'ai eu une erreur qui a été résolu comme:

var childArrayData = new window.opener.Array();  <----- 
childArrayData[0] = 'Data text1'; 
childArrayData[1] = 'Data text2'; 
childArrayData[2] = 'Data text3'; 
window.opener.parentVariable = childArrayData; 

Pourquoi la classe Array est-elle différente entre deux fenêtres différentes? Cela a-t-il un rapport avec le namespacing? Pourriez-vous vous référer à un article sur la réponse?

Merci d'avance.

Best,

Esteve

+0

Êtes-vous charger quelque chose qui pourrait altérer l'objet Array, comme prototype.js? – Greg

+2

*** Quelle erreur ***? Chaque fois que vous demandez de l'aide, si vous vous retrouvez à taper «une erreur», revenez en arrière et dites * quelle * est l'erreur. –

+1

C'est vrai T.J. Je n'ai pas écrit l'erreur car elle n'était pas liée au tableau lui-même. Merci;) –

Répondre

1

C'est un problème connu. Lisez this post on comp.lang.javascript écrit par Douglas Crockford.

Quand vous dites Array, vous parlez à propos window.Array. window est l'objet de contexte de navigateur , et vous obtenez un par page (ou trame). Tous les tableaux créés dans un contexte auront leur propriété constructeur définie sur window.Array.

Un tableau créé dans un contexte différent a un window.Array différent, si votre test

myArray instanceof Array 

échoue. Le standard ECMAScript ne traite pas pas de contextes multiples, même bien que pratiquement toutes les implémentations les prennent en charge. La norme ECMAScript échoue également à fournir une technique fiable pour tester le type de tableaux. La chose évidente aurait été

+0

Merci beaucoup Ionut. –

+0

Bienvenue, Esteve. –

0

pourquoi vous utilisez même le constructeur Array?
essayez d'utiliser la notation [] à la place

quel navigateur utilisez-vous btw? sont les deux cadres sur le même domaine?

+0

Salut Ken, En fait, le problème n'est pas seulement dans la classe Array, mais dans toute classe «partagée» entre les fenêtres parent et enfant. Tous les tests ont été effectués sur Firefox. Désolé de vous demander, mais que faites-vous référence au domaine? Merci Ken pour votre réponse;) Esteve –

Questions connexes