Autor Tema: [Ayuda] Cargar en un div el contenido de un archivo externo  (Leído 10031 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado raiderek

  • Sv Full Member
  • *
  • Mensajes: 948
Sucede que tengo un menú con jquery, entonces con un div se carga el contenido del menú y de paso le defino su ubicación. Todo normal. Algo como lo siguiente.

Código: [Seleccionar]
<div class='posicion' id="arriba">
 <ul class="topnav">
  <li>
        <a href="index.html">Inicio</a>
    </li>
    <li>
        <a href="#">Quiénes Somos</a>
        <ul class="subnav">
            <li><a href="empresa.html">Nuestra Empresa</a></li>
            <li><a href="equipo.html">Nuestro Equipo</a></li>
            <li><a href="historia.html">Historia</a></li>
        </ul>
    </li>
    <li>
        ...
        ...
        ...
        ...
    </li>
</ul>
</div>
Ese div se repite en cada página del sitio donde aparece el menú; y son muchas páginas Lo que quisiera es poder cargar ese menú desde un archivo externo para que sea fácil editar el menú desde un solo lugar. ¿Es posible?

Muchas gracias por su ayuda  :thumbsup:
« Última Modificación: agosto 27, 2012, 07:00:24 pm por raiderek »

Desconectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14587
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re:[Ayuda] Cargar en un div el contenido de un archivo externo
« Respuesta #1 : agosto 27, 2012, 05:28:15 pm »
con un iframe.

Desconectado salvadoresc

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 11652
  • Adobe Certified Expert en ACISEAPRENDE
    • Foro de Diseno - Pixeles al Desnudo
Re:[Ayuda] Cargar en un div el contenido de un archivo externo
« Respuesta #2 : agosto 27, 2012, 05:37:56 pm »
secundo lo del iframe o tu lenguaje de programacion de lado de servidor favorito...
Awaken my child, and embrace the glory that is your birthright. Know that I am the Overmind; the eternal will of the Swarm.

haycoctelesamor.com

Desconectado raiderek

  • Sv Full Member
  • *
  • Mensajes: 948
Re:[Ayuda] Cargar en un div el contenido de un archivo externo
« Respuesta #3 : agosto 27, 2012, 06:55:25 pm »
Gracias a ambos :thumbsup:
No se que tengo contra los iframes pero no me gusta mucho usarlos... Al final lo hice con jquery y la funcion .load() así:

Código: [Seleccionar]
<script type="text/javascript">
$(document).ready(function(){
$('#divmenu').load('menu.html');
});
</script>

Todo el menú lo puse en menu.html y donde aparecerá en la página así:

Código: [Seleccionar]
<div id="divmenu"></div>

Desconectado JaiMe

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 1485
  • λ | h+
Re:[Ayuda] Cargar en un div el contenido de un archivo externo
« Respuesta #4 : agosto 27, 2012, 10:20:33 pm »
@raiderek an excellent choice sir.

la cadena que pasas a metodo load te permite especificar que parte queres cargar del documento html. Es decir podes tener un documento HTML completo en menu.html y cargar solamente el contenido de algun div pasando un selector. Por ejemplo: $( '#target' ).load( 'menu.html #nav' );

Los iframes te pueden sacar de aguas, pero nunca los recomendaria... a menos que te interese soportar navegadores sin soporte Ajax que te permita cargar el HTML dinamicamente como lo has hecho aqui. El problema con los iframes es que tienen su propio browsing context lo que significa que cada iframe tienen su propio objeto global por ende propio set de constructores, esto no puede tener mucha importancia si sos diseñador o entusiasta a desarrollador web, pero cuando escribís aplicaciones web no triviales la complejidad al momento de manejar eventos y comparar objetos aumenta. TLDR: los frames no son malos, pero es necesario evaluar sus costos.

A parte juntar differentes secciones desde el lado del servidor y regresar todo junto en un documento html, existen herramientas como Dreamweaver que te permiten crear templates. Otra opción, lo que hago en muchos de mis projectos, es crear un build script que junte differentes partes y deploy la version final de tu webapp - esto puede sonar overkill si estas haciendo proyectos pequeños.
"Unless you try to do something beyond what you have already mastered, you will never grow."
― Ralph Waldo Emerson

Desconectado Jaru

  • The Communiter-
  • *
  • Mensajes: 13252
  • some text
Re:[Ayuda] Cargar en un div el contenido de un archivo externo
« Respuesta #5 : agosto 27, 2012, 10:27:27 pm »
a recomendar jquery venia y me topo con el tip de jaime que no me lo sabia :D Excelente!


cabe mencionar que una vez cargado el contenido externo en tu DOM ya lo podes manipular directamente mas al suave
N/A

Desconectado JaiMe

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 1485
  • λ | h+
Re:[Ayuda] Cargar en un div el contenido de un archivo externo
« Respuesta #6 : agosto 27, 2012, 10:37:27 pm »
a recomendar jquery venia y me topo con el tip de jaime que no me lo sabia :D Excelente!

cabe mencionar que una vez cargado el contenido externo en tu DOM ya lo podes manipular directamente mas al suave

En efecto mi estimado naruto. Podes pasar un callback como segundo argumento al metodo load. Dentro del callback - la función que se ejecuta una ves el documento ha sido cargado - tenes acceso al contenido HTML mediante el keyword this

Ejemplo: El codigo de mi extension para cargar la lista de los mensajes mas recientes
Código: [Seleccionar]
// Loading Recent Posts
  $('#svc-recent').load(homeUrl + 'index.php #adk_block_5 td:odd:lt(10)', function(){
    var temp = [];
    $(this).find('td').each(function(i, e){
      temp.push('<div>' + $(e).html() + '</div>');
    });
    $(this).html(temp.join(' '));
  });
« Última Modificación: agosto 27, 2012, 11:14:55 pm por JaiMe »
"Unless you try to do something beyond what you have already mastered, you will never grow."
― Ralph Waldo Emerson

Desconectado raiderek

  • Sv Full Member
  • *
  • Mensajes: 948
Re:[Ayuda] Cargar en un div el contenido de un archivo externo
« Respuesta #7 : agosto 28, 2012, 12:18:02 am »
la cadena que pasas a metodo load te permite especificar que parte queres cargar del documento html. Es decir podes tener un documento HTML completo en menu.html y cargar solamente el contenido de algun div pasando un selector. Por ejemplo: $( '#target' ).load( 'menu.html #nav' );

Era lo que me faltaba! Muchas gracias.