Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/01/2011, 09h25   #1
Invité régulier
 
Jo
Inscription : novembre 2010
Messages : 25
Détails du profil
Informations personnelles :
Nom : Jo
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : novembre 2010
Messages : 25
Points : 6
Points : 6
Par défaut DOM - Ajouter une frameset dans une framset Compatibilité IE7

Bonjour,

Voiçi mon problème.

Je possède une page html composé d'un frameset qui possède 2frameset.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Add Frameset</title>
</head>
    <frameset cols = "105,*">
        <frameset id="FIRSTSET" rows = "74,0,60,*,0">
                // Mes 5 frames
        </frameset>        
        <frameset id="SECONDSET" rows='70,*,0,0,0'>
                // Mes 5 frames
        </frameset>        
    </frameset>
</html>
Dans l'une de mes frames je souhaite rajouter dynamiquement via le DOM une 3ème frameset via un click.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var addFrameset = function() {
var ListNodeFrameSet = top.document.getElementsByTagName('frameset');
 
        if (ListNodeFrameSet.length != 0)
        {          
            var frameSetParent = ListNodeFrameSet[0];
            with (frameSetParent)
            {
               cols += ",20";
               setAttribute("frameborder", "0");
            }
 
            var framesetTHIRD = document.createElement('frameset');
            with (framesetTHIRD )
            {
                 id = "framesetTHIRD ";
                 rows = "*";
            }
 
            var maframe = document.createElement('frame');
 
            framesetTHIRD .appendChild(maframe );
 
            frameSetParent.appendChild(framesetTHIRD );
        }        
}
Cela fonctionne sur IE8, mais IE7 block sur la partir appenChild du frameset.

Ma question est : IE7 accepte qu'on puisse rajouter une frameset par le DOM ? Si ou de quelle manière ?

Merci de faire partager vos connaissances.
zalzasta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 15h53   #2
Invité régulier
 
Jo
Inscription : novembre 2010
Messages : 25
Détails du profil
Informations personnelles :
Nom : Jo
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : novembre 2010
Messages : 25
Points : 6
Points : 6
En fait, le problème ne vient pas du fait qu'on ne puisse pas rajouter une frame ou un frameset dans une page html, sous IE7.

Le problème vient du fait qu'on ne puisse pas le faire a partir d'une frame fille.

Exemple :

Code :
1
2
3
4
5
6
7
8
9
10
 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
</head>
<frameset name='masterFrameset'>
        <frameset id="FIRSTSET" >
                <frame id='frame1'/>
        </frameset>
</frameset>
</html>
Je peux très bien rajouter n'importe quel frameset ou frame a partir de cette page html. Mais je ne peux pas le faire à partir de la frame d'id 'frame1'.

Apparement c'est une sécurité ou un défaut d'IE7, et ma question est :

Peux-t-on désactiver cette sécurité sous IE7 afin de faire des appendChild de nimporte quel objet à partir d'une frame, sur un frameset parent ?
zalzasta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 22h29   #3
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 750
Points : 4 750
Bonsoir,
Citation:
Peux-t-on désactiver cette sécurité sous IE7 afin de faire des appendChild de nimporte quel objet à partir d'une frame, sur un frameset parent ?
Sûrement que non, mais ce que tu peux faire c'est remonter les fonctions au niveau de la FRAME principale, et rien ne t'empêche de les exécuter à partir de FRAME enfant.
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 10h08   #4
Invité régulier
 
Jo
Inscription : novembre 2010
Messages : 25
Détails du profil
Informations personnelles :
Nom : Jo
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : novembre 2010
Messages : 25
Points : 6
Points : 6
Merci pour ta réponse.

Citation:
Envoyé par NoSmoking Voir le message
Bonsoir,
Sûrement que non, mais ce que tu peux faire c'est remonter les fonctions au niveau de la FRAME principale, et rien ne t'empêche de les exécuter à partir de FRAME enfant.
Tu parles de faire remonter les fonctions au niveau de la frame principale. Je suis d'accord avec toi, c'est la solution pour laquelle, j'ai opté. Mais comment faire remonter ces fonctions. Au départ je voulais le faire en rajoutant une balise script ayant pour source mon fichier JS contenant mes fonctions, mais le problème reste le même je peux pas faire de 'appendChild' de n'importe quel objet (objet Script en l'occurrence). J'ai eu la chance d'avoir déjà une balise script dans la frame principale et j'ai juste eu a modifier son source, mais je trouve pas ca très propre, n'y aurait-il pas une meilleur solution ?
zalzasta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2011, 12h21   #5
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 750
Points : 4 750
- Dans le document qui contient les FRAMESET, et entre les balises SRIPT tu places la fonction.
- Dans la page qui déclenche la fonction tu l'appelles le plus simplement du monde
Code :
<button onclick="parent.addFrameset();">Add Frameset</button>
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h53.


 
 
 
 
Partenaires

Hébergement Web