Funciones.js:
Código Javascript:
Ver original
// Interpretador de codigo de ajax para reconocer funciones Javascript var tagScript = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)'; /** * Eval script fragment * @return String */ String.prototype.evalScript = function() { return (this.match(new RegExp(tagScript, 'img')) || []).evalScript(); }; /** * strip script fragment * @return String */ String.prototype.stripScript = function() { return this.replace(new RegExp(tagScript, 'img'), ''); }; /** * extract script fragment * @return String */ String.prototype.extractScript = function() { var matchAll = new RegExp(tagScript, 'img'); return (this.match(matchAll) || []); }; /** * Eval scripts * @return String */ Array.prototype.evalScript = function(extracted) { var s=this.map(function(sr){ var sc=(sr.match(new RegExp(tagScript, 'im')) || ['', ''])[1]; if(window.execScript){ window.execScript(tagScript); } else { window.setTimeout(sc,0); } }); return true; }; /** * Map array elements * @param {Function} fun * @return Function */ Array.prototype.map = function(fun) { if(typeof fun!=="function"){return false;} var i = 0, l = this.length; for(i=0;i<l;i++) { fun(this[i]); } return true; }; function ajaxFunction() { var xmlHttp; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); return xmlHttp; } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); return xmlHttp; } catch (e) { try { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); return xmlHttp; } catch (e) { alert("¡Tu navegador no soporta AJAX!"); return false; }}} } function Cargar(url,target) { var ajax = ajaxFunction(); ajax.open("POST", url, true); ajax.onreadystatechange = function() { if (ajax.readyState == 4){ var scs = ajax.responseText.extractScript(); //capturamos los scripts document.getElementById (target).innerHTML = ajax.responseText.stripScript(); //eliminamos los scripts... ya son innecesarios scs.evalScript(); } } ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send(null); } function EnviarForm(_pagina,seccion,formid,capa) { var ajax = ajaxFunction(); var Formulario = document.getElementById(formid); var longitudFormulario = Formulario.elements.length; var cadenaFormulario = ""; var sepCampos = ""; for (var i=0; i <= Formulario.elements.length-1;i++) { cadenaFormulario += sepCampos+Formulario.elements[i].name+'='+encodeURI(Formulario.elements[i].value); sepCampos="&"; } ajax.open("POST", _pagina, true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.onreadystatechange = function() { if (ajax.readyState==1){ document.getElementById(capa).innerHTML = "<img src='../Imagenes/loader.gif' align='center' /> Cargando..."; } if (ajax.readyState == 4) { var scs = ajax.responseText.extractScript(); //capturamos los scripts document.getElementById (capa).innerHTML = ajax.responseText.stripScript(); //eliminamos los scripts... ya son innecesarios scs.evalScript(); } } ajax.send(cadenaFormulario+"&"+seccion); }
En la pagina Index.php cargo Funciones.js y el menu que funciona con Ajax, estas son algunas de las paginas que cargo en el DIV contenido:
Google.php:
Código PHP:
Ver original
<script src="http://maps.google.com/maps?file=api&v=2&sensor=true_or_false&key=KEY" type="text/javascript"></script> <script type="text/javascript"> var mapa; var gdir; var geocoder = null; var addressMarker; function cargarMapa() { if (GBrowserIsCompatible()) { mapa = new GMap2(document.getElementById("mapa_ruta")); // escribe las indiciaciones de la ruta a seguir gdir = new GDirections(mapa, document.getElementById("")); //variable que almacena el centro del mapa inicial var centro = new GLatLng(41.282451,-4.107685); alert("Dentro"); // este alert NO funciona bien //controles de zoom mapa.addControl(new GSmallMapControl()); //controles tipo mapa: plano, satelite o hibrido mapa.addControl(new GMapTypeControl()); //lo que vemos inicialmente en el mapa mapa.setCenter(centro, 9); //impide que el usuario desplace el mapa // mapa.disableDragging(); //variable que almacena la posicion de la marca var pos_marca = new GLatLng(40.944477006541554, -4.116225242614746); //marca roja var marca = new GMarker(pos_marca); //añadimos la marca al mapa mapa.addOverlay(marca); //añadimos un comentario en la marca var comentario = "Comentario"; GEvent.addListener(marca,"click", function() { marca.openInfoWindowTabsHtml(comentario); }); //carga los datos de tiempo y distancia de la ruta GEvent.addListener(gdir, "load", onGDirectionsLoad); //funcion que muestra mensajes en caso de error GEvent.addListener(gdir, "error", mostrarError); } // fin if } // fin Cargar_Mapa </script> .. aqui hay codigo HTML... <div id="mapa_ruta" style="width: 650px; height: 400px;"><img src="Imagenes/loader.gif"></div> <script> cargarMapa(); alert("abajo"); // este alert funciona bien salvo en Chrome </script>
Formulario.php:
Código PHP:
Ver original
<!-- Formulario --> <form name="form" id="form" action="#" method="post"> ...Campos del Formulario... <input name="insertar" id="insertar" value="Insertar" type="button" onclick="EnviarForm('procesarForm.php','c=3','form','contenido');"> </form> <script> alert('holaaaaaa'); </script>
¿alguien sabe como solucionarlo para que funcionen los Javascript en todos los navegadores?
¿alguien sabe como hacer para que se cargue el mapa de Google Maps por medio de Ajax?