2011-05-29 3 views
3

Ok, j'ai 2 iframes dans une page parent (pour une raison quelconque).Modifier la source iframe d'un autre iframe

J'ai un menu de navigation sur la page parent, qui change la source de iframe # 1 ...

iFrame # travail de 1, est d'afficher un autre menu de navigation ... Comme un menu Subnavigation ...

Maintenant, comment puis-je cliquer sur un li dans iFrame # 1, changer la source de iframe # 2? Ils sont tous les deux sur la même page parent ...

En dehors d'échouer lamentablement, je reçois aussi un avertissement outils Dev Chrome -

JavaScript Unsafe tentative d'accès cadre avec le fichier URL: /// C: /website/index.html à partir de l'image avec le fichier URL: /// C: /website/news/navigator.html. Les domaines, les protocoles et les ports doivent correspondre.

est ici un code pour rendre les choses un peu plus claires:

Le code HTML

<!-- HTML for the parent page itself --> 
<iframe id="frameone" src=""></iframe> 
<iframe id="frametwo" src=""></iframe> 
<button onclick="onenav('test.html')">Change 1st frame</button> 

<!-- The following is the HTML that is loaded inside "frameone" --> 
<button onclick="twonav('test2.html')">Change 2nd frame</button> 

// Javascript 
var one = document.getElementById('frameone'); 
var two = document.getElementById('frametwo'); 

function onenav(x){ 
    one.src = x; 
} 

function twonav(y){ 
    two.src = y; 
} 

Pour moi, cela est logique, puisque tout cela est en cours d'exécution sur la page parent ... Au moment du chargement, je interroger les outils de développement et je peux voir que les deux, 'un' et 'deux' ont des éléments de cadre ... Le premier bouton fonctionne, le second, ne ...

+0

comment avez-vous essayé en premier lieu? seul le parent peut changer le contenu de sorte que vous devrez communiquer de frame1 à parent et parent à frame 2. – Ibu

+0

J'ai modifié l'op pour vous fournir un échantillon ... J'ai pensé à faire un jsfiddle, mais ensuite n'a pas envie de passer à travers les maux de tête du contenu iframe ... Ne sais même pas si vous pouvez coder une page et l'avoir exécuté dans un cadre à l'intérieur jsfiddle ... Lol ... – Abhishek

+0

Si les pages sont tous de même domaine, iframe peut aller directement via l'objet parent parent.frames [1] .... – mplungjan

Répondre

5

Works pour moi lors de l'utilisation parent.twonav

DEMO

var links = [ 
    'javascript:\'<button onclick="parent.twonav(1)">Change 2nd frame</button>\'', 
    'javascript:\'Hello\'' 
]; 
var one, two; 
window.onload=function() { 
    one = document.getElementById('frameone'); 
    two = document.getElementById('frametwo'); 
} 

function onenav(idx) { 
    one.src=links[idx]; 
} 

function twonav(idx) { 
    two.src=links[idx]; 
} 
+0

Ouais, vous l'avez fonctionné ... Donne-moi quelques minutes pour déverser ça et comprendre ce qui est différent ... – Abhishek

+0

Soupir, ne semble pas fonctionner dans ma mise en œuvre ... – Abhishek

+0

Techniquement, c'est la bonne solution ... Cela n'a pas fonctionné pour moi, mais je soupçonne que c'est à cause de beaucoup de problèmes contextuels avec ma mise en œuvre ... Merci quand même ... – Abhishek

0

Comment avez-vous essayé de changer le source iframe?

parent.document.getElementById('2').src = "the new url"; 

Avez-vous essayé quelque chose comme ça? Je supposais de votre message que l'ID de la 2ème iframe est 2.

+0

Le parent, iframe # 1 et iFrame # 2 sont tous liés à un seul fichier js ... Dans ce fichier js, j'ai créé 2 variables pour les deux frames ... Puis il y a une fonction, qui prend une variable passée x de l'élément qui appelle la fonction, et la met comme source ... si bien, le html lit comme