El Problema es que al cargar una librería que interpreta el código JS escrito por ajax, me deja de funcionar un slider que tengo con mootols.
Código HTML:
Ver original//Cargo libreria mootols
<script src="scripts/mootools-1.2-core.js" type="text/javascript"></script> <script src="scripts/_class.noobSlide.packed.js" type="text/javascript"></script> <script language='javascript' type="text/javascript"> window.addEvent('domready', function () {
//SAMPLE 4 (walk to item)
var nS4 = new noobSlide({
autoPlay: true,
mode: 'vertical',
box: $('slider'),
items: $$('#slider h3'),
size: 171,
handles: $$('#slider_botones img'),
onWalk: function (currentItem, currentHandle) {
this.handles.set('opacity', 0.5);
currentHandle.set('opacity', 1);
}
});
});
//Cargo libreria que interpreta los JS
<script src="/include/scripts/InterpretaJS.js" type="text/javascript"></script> <script type="text/javascript"> 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 fajax(id) {
var url = "ajax.aspx"; //página que se debe cargar
var contenedor = "cargaAjax"; //id div a recargar
var ajax = ajaxFunction();
if (!ajax) {
alert("No se puede ejecutar este proceso: Error de navegador");
return false;
}
document.getElementById(contenedor).innerHTML = "
<div class='progr_box1'><div class='progr_video'><br><br><br><br><br><br><center><strong><span style='color:White;'> ..:: Cargando Video ::..
</span><br><br><img src='/imagenes/loading.gif'><br> <br> </center></strong><a id='player' style='display:block;width:640px;height:380px;'></a></div><div class='progr_video_share'><span>Visto: Cargando datos...
</span>       <img src='/imagenes/loading.gif'> </div><h1><span>Cargando título....<p>Cargando bajada</p></div>"; ajax.open("POST", url, true);
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 && (ajax.status == 200 || window.location.href.indexOf("http") == -1)) {
var scs = ajax.responseText.extractScript();
document.getElementById(contenedor).innerHTML = ajax.responseText;
scs.evalScript();
}
}
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.send("id=" + id);
}
Si saco la libreria InterpretaJS.js funciona el slider, por eso se ese es el problema, dicha librería es la siguiente:
Código Javascript
:
Ver originalvar 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(sc);
}
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;
};
La saque de este mismo
Foro
He intentado moviendo la librería que trae los conflictos antes de mootols y el problema sigue, ya no se que más puedo hacer.