Tema: Iframes & IE
Ver Mensaje Individual
  #6  
Antiguo 19-02-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ok. Entonces parece ser que el problema se restringe a un IFrame. Sigo haciendo pruebas y la verdad es que no encuentro nigún problema con IE7.

De todas formas, insisto, creo que es una manera muy complicada de cargar la página, sobre todo cuando podrías hacerlo sin hacer peticiones al servidor.

Usando javascript puedes cambiar la propiedad src del iframe. Aquí te pongo un ejemplo:

Código PHP:
<?php
$frameSource 
'';

$paginas = array(
    
'bMySQL' => 'http://mysql.com',
    
'bPHP' => 'http://php.net',
    
'bApache' => 'http://apache.org'
);

if (
$_SERVER['REQUEST_METHOD'] == 'POST')
{
    if (isset(
$_POST['bMySQL']))
    {
        
$frameSource $paginas['bMySQL'];
    }

    if (isset(
$_POST['bPHP']))
    {
        
$frameSource $paginas['bPHP'];
    }

    if (isset(
$_POST['bApache']))
    {
        
$frameSource $paginas['bMySQL'];
    }
}

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv='content-type' content='text/html; charset=iso-8859-1'>
<meta name='generator' content='editplus'>
<meta name='author' content='román sánchez'>

<title> Menú </title>

<script type='text/javascript'>
function cambia(boton)
{
    var marco = document.getElementById('contenido');

    switch (boton.name)
    {
        case 'bMySQL':
            marco.src = '<?php echo $paginas["bMySQL"?>';
            break;

        case 'bPHP':
            marco.src = '<?php echo $paginas["bPHP"?>';
            break;

        case 'bApache':
            marco.src = '<?php echo $paginas["bApache"?>';
            break;
    }

    return false;
}
</script>
</head>
<body>
    <form method='post' action=''>
        <table border='1'>
            <tr>
                <td><button type='submit' name='bMySQL' onclick='cambia(this)'>MySQL</button></td>
                <td rowspan='3'><iframe src='<?php echo $frameSource ?>' id='contenido' name='contenido' width='640' height='480'></iframe></td>
            </tr>
            <tr>
                <td><button type='submit' name='bPHP' onclick='return cambia(this)'>PHP</button></td>
            </tr>
            <tr>
                <td><button type='submit' name='bApache' onclick='return cambia(this)'>Apache</button></td>
            </tr>
        </table>
    </form>
</body>
</html>
Cada botón tiene un evento onclick que llama a la función cambia() de javascript. Esta función se encarga de cambiar el atributo src del iframe dependiendo del botón que la haya llamado.

Si te fijas, dicha función regresa false, evitando así que se realice el submit, esto es, los datos no se envían al servidor y el cambio de página se hace desde el mismo cliente.

Por otra parte, si el usuario tiene deshabilitado el uso de javascript, entonces la función no se llama y se realiza el submit normal. En este caso entra en juego PHP para deterrminar qué boton hizo el envío y, de esta forma, ajustar el valor del src del iframe convenientemente.


Pero aún más. Si en lugar de usar botones usaras enlaces, te evitarías tanto rollo, ya que puedes dirigir el href del enlace directamente al iframe sin necesidad de javascript:

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<
html>
<
head>
<
meta http-equiv='content-type' content='text/html; charset=iso-8859-1'>
<
meta name='generator' content='editplus'>
<
meta name='author' content='román sánchez'>

<
titleMen&#250; </title>

</head>
<
body>
    <
form method='post' action=''>
        <
table border='1'>
            <
tr>
                <
td><a href='http://mysql.com' target='contenido'>MySQL</a></td>
                <
td rowspan='3'><iframe src='' id='contenido' name='contenido' width='640' height='480'></iframe></td>
            </
tr>
            <
tr>
                <
td><a href='http://php.net' target='contenido'>PHP</a></td>
            </
tr>
            <
tr>
                <
td><a href='http://apache.org' target='contenido'>Apache</a></td>
            </
tr>
        </
table>
    </
form>
</
body>
</
html
// Saludos
Responder Con Cita