Archivos de la categoría ‘javascript’

Problemas al usar callbacks simultáneos en asp.net

25 Febrero 2009

Problema: Estoy usando callbacks para traerme datos del servidor (implementando el interfaz System.Web.UI.ICallbackEventHandler) , pero cuando lanzo varios a la vez (es decir, que algunos callbacks empiezan sin que hayan terminado los anteriores) esto no parece comportarse como debiera.

Solución: Hay un error en la implementación del método WebForm_CallbackComplete() que es generado por asp.net cuando estamos usando el método  Page.ClientScript.GetCallbackEventReference para que nos cree los scripts necesarios para realizar los callbacks (versión de cuando escribo esto: .NET 3.5)
Para arreglarlo hay que sustituir la función en cuestión por ésta otra. Para ello la incluimos en nuestra página aspx:

function WebForm_CallbackComplete_SyncFixed() {
  for (var i = 0; i < __pendingCallbacks.length; i++) {
   callbackObject = __pendingCallbacks[ i ];
  if (callbackObject && callbackObject.xmlRequest && (callbackObject.xmlRequest.readyState == 4)) {
      if (!__pendingCallbacks[ i ].async) {
     __synchronousCallBackIndex = -1;
   }
   __pendingCallbacks[i] = null;
   var callbackFrameID = "__CALLBACKFRAME" + i;
   var xmlRequestFrame = document.getElementById(callbackFrameID);
   if (xmlRequestFrame) {
     xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
   }
   WebForm_ExecuteCallback(callbackObject);
  }
 }
}

Y para que nuestra página use esta función en vez de la que da problemas, incluimos también esto al final de la página:

if (typeof (WebForm_CallbackComplete) == "function") {
  WebForm_CallbackComplete = WebForm_CallbackComplete_SyncFixed;
}

El código para la solución ha sido tomado de aquí

Sustituir caracteres especiales en cadenas de texto por javascript

14 Mayo 2008

Problema: Quiero sustituir todas las ocurrencias de algun carácter especial, como por ejemplo el signo de interrogación “?”, en una cadena de texto, mediante javascript

Solución: Usar el método replace mediante expresiones regulares. En este caso sería:
micadena = micadena.replace(/\?/g, ‘texto’);

Nota: Para sustituir todos los caracteres especiales por su codificación unicode, tenemos el método escape()