Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Cargar menu acordeon con ajax

Estas en el tema de Cargar menu acordeon con ajax en el foro de Frameworks JS en Foros del Web. Hola que tal, necesito cargar en un div un menu acordeon, que usa javascript y no se como hacer para que se vea al cargarlo ...
  #1 (permalink)  
Antiguo 21/05/2008, 15:13
 
Fecha de Ingreso: febrero-2006
Mensajes: 217
Antigüedad: 18 años, 9 meses
Puntos: 0
Cargar menu acordeon con ajax

Hola que tal, necesito cargar en un div un menu acordeon, que usa javascript y no se como hacer para que se vea al cargarlo en el div ya que uso ajax. Entiendo que se puede hacer con eval() si se tiene prototype pero ni idea donde poner ese eval. Y el sistema HOWTO que puso MABORAK en este sitio no me a resultado, porque tampoco se donde ubicar el codigo.

Bueno, soy un desastre en java, asi que si alguien se apiada de mi se lo agradecere mucho.

Este es el codigo para cargar el div:

Código HTML:
<script type="text/javascript">


var bustcachevar=1 //bust potential caching of external pages after initial request? (1=yes, 0=no)
var loadedobjects=""
var rootdomain="http://"+window.location.hostname
var bustcacheparameter=""

function ajaxpage(url, containerid){
var page_request = false
if (window.XMLHttpRequest) // if Mozilla, Safari etc
page_request = new XMLHttpRequest()
else if (window.ActiveXObject){ // if IE
try {
page_request = new ActiveXObject("Msxml2.XMLHTTP")
} 
catch (e){
try{
page_request = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else
return false
page_request.onreadystatechange=function(){
loadpage(page_request, containerid)
}
if (bustcachevar) //if bust caching of external page
bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
page_request.open('GET', url+bustcacheparameter, true)
page_request.send(null)
}

function loadpage(page_request, containerid){
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
document.getElementById(containerid).innerHTML=page_request.responseText
}

function loadobjs(){
if (!document.getElementById)
return
for (i=0; i<arguments.length; i++){
var file=arguments[i]
var fileref=""
if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
if (file.indexOf(".js")!=-1){ //If object is a js file
fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", file);
}
else if (file.indexOf(".css")!=-1){ //If object is a css file
fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", file);
}
}
if (fileref!=""){
document.getElementsByTagName("head").item(0).appendChild(fileref)
loadedobjects+=file+" " //Remember this object as being already added to page
}
}
}

</script> 
El div donde abro la pagina se llama politicos, y la pagina diputados. Y este es el link para abrirlo:

Código HTML:
<a href="javascript:ajaxpage('diputados.php', 'politicos');">Diputados</a> 
  #2 (permalink)  
Antiguo 21/05/2008, 15:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Cargar menu acordeon con ajax

En tu función loadpage es donde tienes que implementar el howto de Maborak.

Saludos.
  #3 (permalink)  
Antiguo 21/05/2008, 15:41
 
Fecha de Ingreso: febrero-2006
Mensajes: 217
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Cargar menu acordeon con ajax

Hola GatorV, puse el script interpretadorajax. js en el header y el otro codigo en la funcion loadpage, pero no me resulta . Tengo que reemplazarlo por toda la funcion loadpage?.

asi lo deje, pero para ser sincero no se como hacerlo

Código HTML:
function loadpage(page_request, containerid){
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
document.getElementById(containerid).innerHTML=page_request.responseText

//aqui puse el codigo de Maborak

var scs=myAjax.responseText.extractScript();    //capturamos los scripts
        containerid.innerHTML=myAjax.responseText
        scs.evalScript();       //ahora si, comenzamos a interpretar todo  
}

Última edición por Ruben_C; 21/05/2008 a las 16:11
  #4 (permalink)  
Antiguo 21/05/2008, 16:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Cargar menu acordeon con ajax

Hola Ruben_C,

De la manera que lo pones, no es la correcta, si te fijas tu response viene en page_request, de ahí es de donde tienes que extraer los scripts:
Código:
function loadpage(page_request, containerid){
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
        var scs=page_request.extractScript();    //capturamos los scripts
        document.getElementById(containerid).innerHTML=page_request.responseText
        scs.evalScript();       //ahora si, comenzamos a interpretar todo  
}
Saludos.
  #5 (permalink)  
Antiguo 21/05/2008, 17:11
 
Fecha de Ingreso: febrero-2006
Mensajes: 217
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Cargar menu acordeon con ajax

Al hacerlo asi me aparece que el objeto no acepta esta propiedad o metodo.

Bueno, la idea del codigo original es poder cargar tambien los css y javascript con la funcion loadobjs() para eso se usa el siguiente codigo en los links:

Código HTML:
<a href="javascript:ajaxpage('diputados.php', 'politicos'); loadobjs('SpryAssets/SpryAccordion.css', 'SpryAssets/SpryAccordion.js');">Diputados</a></p> 
Con el css ningun problema, pero con el .js todo mal

alguna idea?
  #6 (permalink)  
Antiguo 23/05/2008, 17:52
 
Fecha de Ingreso: febrero-2006
Mensajes: 217
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Cargar menu acordeon con ajax

Hola estimados, yo de nuevo, la verdad es que mis neuronas no son lo suficientemente agiles como para lograr que se carge el javascrip que viene con el menu acordeon y ya he utilizado las diferentes maneras que hay aqui y no me resulta.

El codigo esta arriba y ahora pongo el codigo que viene de la pagina que cargo a ver si por ahi esta el error

Código HTML:
<head>
<title>Documento sin t&iacute;tulo</title>
<script type="text/javascript" src="SpryAccordion.js"></script>
</head>

<body>
<div id="Accordion1" class="Accordion" tabindex="0">
  <div class="AccordionPanel">
    <div class="AccordionPanelTab">I Region de Tarapaca</div>
    <div class="AccordionPanelContent">Contenido 1</div>
  </div>
  <div class="AccordionPanel">
    <div class="AccordionPanelTab">II Region de Antofagasta</div>
    <div class="AccordionPanelContent">Contenido 2</div>
  </div>
  <div class="AccordionPanel">
    <div class="AccordionPanelTab">III Region de Atacama</div>
    <div class="AccordionPanelContent">Contenido 3</div>
  </div>
  <div class="AccordionPanel">
    <div class="AccordionPanelTab">V Region de Coquimbo</div>
    <div class="AccordionPanelContent">Contenido 4</div>
  </div>
</div>
<script type="text/javascript">
<!--
var Accordion1 = new Spry.Widget.Accordion("Accordion1");
//-->
</script>

</body>
</html> 
Cualquier idea o recomendacion vale.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:36.