2010-04-07 4 views
0

J'ai un main.html html comme indiqué ----- main.html ---------------- Est-il possible d'ouvrir un nouveau cadre en HTML en dessous d'un cadre existant en HTML?

<title>FlexTrail</title> 
    <script src="main.js"></script> 
    <frameset rows='200,200'> 
     <frame id='one' src="file:///C:/Documents%20and%20Settings/demo/Desktop/FlexTrail/project1/bin-debug/project1.html" frameborder='0' /> 
     <frame id='two' src="" frameborder='0' /> 

    </frameset> 

</head> 
<body > 

</body> 

ici la première image contient un html généré par Flex Builder 3 et en cliquant sur ce bouton, j'appelle la fonction func2() dans main.js en utilisant l'interface externe.

---- ----------------- main.js

var flag2 = 0; fonction func2() { flag2 = 1; parent.frames ['one']. Location = "fichier: /// C: /Documents%20and%20Settings/demo/Desktop/FlexTrail/project1/bin-debug/project1.html"; parent.frames ['two']. Location = "fichier: /// C: /Documents%20and%20Settings/demo/Desktop/FlexTrail/project2/bin-debug/project2.html"; }

Je veux l'autre fichier à ouvrir dans la même fenêtre ci-dessous le premier.Mais le problème ici est quand je cours cela dans IE8 l'autre image s'ouvre dans une fenêtre différente, mais dans Firefox je ne reçois aucun respose.

Note: - Javascript est activé dans les deux navigateurs et pop-up ne sont pas bloqués

Plz me dire où im mal

Merci à l'avance

Prashant Dubey

+1

Votre frameset doit être dans le corps pas à l'intérieur des balises de tête. Aussi dans Firefox si vous ouvrez le ErrorConsole (dans le menu des outils) cela vous donne-t-il un message d'erreur? –

+1

En fait, mon commentaire ci-dessus est faux. On dirait que l'élément body doit être défini dans la source de l'un des cadres http://www.w3schools.com/tags/tag_frameset.asp. Je pense que vous feriez mieux d'utiliser les iframes. –

+0

J'ai déjà essayé de le garder dans le corps, mais même pas la première image est visible à la fois dans IE et Firefox. Il n'y a pas d'erreur dans ErrorConsole dans Firefox. Merci –

Répondre

1

est un exemple ici avec les iframes qui peuvent aider

Main.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 

    <script type="text/javascript"> 
    function loadTwo() 
    { 
    document.getElementById('two').src = 'two.htm' 
    document.getElementById('two').style.display='block'; 
    } 

    function loadThree() 
    { 
    document.getElementById('two').src = 'three.htm' 
    document.getElementById('two').style.display='block'; 
    } 
    </script> 

    <title>Untitled Page</title> 
</head> 
<body> 
    <iframe id="one" src="One.htm"></iframe> 
    <iframe id="two" style="display: none" src="Two.htm"></iframe> 
</body> 
</html> 

One.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head> 
    <title>Untitled Page</title> 
<script language="javascript" type="text/javascript"> 
// <!CDATA[ 

function load2_onclick() { 
parent.loadTwo() 
} 

function load3_onclick() { 
parent.loadThree() 
} 

// ]]> 
</script> 
</head> 
<body bgcolor="#ff0000"> 
    <input id="load2" type="button" value="Load 2" onclick="return load2_onclick()" /> 
    <input id="load3" type="button" value="Load 3" onclick="return load3_onclick()" /> 
</body> 
</html> 

Two.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>Untitled Page</title> 
</head> 
<body bgcolor="#00ff00"> 

</body> 
</html> 

three.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>Untitled Page</title> 
</head> 
<body style="background-color: #0000ff"> 
</body> 
</html> 
+0

Merci pour votre réponse je vais l'essayer vous informer la même chose. Merci à tous pour poster des réponses –

+0

Je l'ai réussi mais parent.func() donnait une erreur donc j'ai utilisé window.parent.func() et ça a marché .. Merci à tous pour votre aide. Merci beaucoup –

1

Cadres ont été utilisés pour segmentate pages Web, tout comme les tranches dans les outils de conception. Ils ne peuvent pas se chevaucher.

Peut-être que vous pourriez réaliser ce que vous voulez en utilisant iframes au lieu d'utiliser un jeu de cadres. Voir this site pour une démonstration. Mais là encore, je ne serais pas surpris s'il y a des navigateurs qui ne supportent pas les iframes qui se chevauchent.

2

Votre cadre est incorrect. Un jeu de cadres n'est pas une page, il n'a donc pas de corps:

<html> 
    <head> 
    <title>FlexTrail</title> 
    <script src="main.js"></script> 
    </head> 
    <frameset rows='200,200'> 
    <frame id="one" src="file:///C:/Documents%20and%20Settings/demo/Desktop/FlexTrail/project1/bin-debug/project1.html" frameborder="0" /> 
    <frame id="two" src="" frameborder="0" /> 
    </frameset> 
</html> 
2

Correct, correctif trouvé. Besoin d'ajouter un tag NAME aux cadres ainsi que des tags d'identification. Vous avez également besoin de balises de jeu de cadres correctement formatées comme d'autres personnes ont répondu, mais sans balise NAME, cela ne fonctionnera toujours pas. Editer (encore): Vous avez également remarqué votre autre quête concernant plusieurs fichiers et un seul script. J'ai juste jeté le script en ligne pour mon exemple ci-dessous, mais vous pouvez aussi en faire un fichier .js. Si vous le chargez plutôt dans tous les fichiers html, vous pouvez simplement utiliser les appels js de style parent.function() dans les fichiers secondaires chargés dans les cadres. Encore une fois, cela dépend de la quantité de code disponible et de ce que vous essayez de faire, etc. Le kilométrage peut varier. =) (Vous remarquerez que je ne l'ai pas besoin d'ajouter un script dans mon fichier 1.html)

Voir ci-dessous ...

html principal.

<HTML> 
<HEAD> 
<TITLE> Title Goes here </TITLE> 
<script type="text/javascript"> 
var flag2=0; 
function func2() 
{ 
flag2=1; 
parent.frames['one'].location="1.html"; 
parent.frames['two'].location="3.html"; 
} 
</script></HEAD> 
<FRAMESET rows="115,*"> 
      <FRAME SRC="1.html" ID="one" name="one"> 

      <FRAME SRC="2.html" ID="two" name="two"> 

</FRAMESET> 

</HTML> 

Ensuite, 1.html:

<HTML> 
<HEAD> 
<TITLE> Cow goes Moo </TITLE> 
</HEAD> 
<body> 
One.html 
    <input onclick="parent.func2();" id="Button1" type="button" value="button" /> 
</body> 

</HTML> 

2.html et 3.html peut être n'importe quoi vraiment, peu importe.

Le problème avec cette configuration est que IE recherche le ID tag dans le javascript, mais FireFox est à la recherche d'NOM attribut du cadre. Les pages ci-dessus fonctionnent dans IE, FF et Chrome.

Questions connexes