Con SharePoint muchas veces ejecutaremos código Javascript justo tras la carga de la página, para eso es bien conocido el document.ready de JQuery. Pero algunas veces para nuestra sorpresa, campos como metadatos administrados o formularios con InfoPath, no se ve afectados por ese document.ready.
El problema consiste en que construyen tras el document.ready. Lo primero que se puede venir a la cabeza es meter un retardo y ejecutarlo. Eso me lo soluciona, si y no, ya que si por el motivo que sea, nuestra página tarda más tiempo que ese retardo, no le afecta nuestro código retardado.
Consultando con los compañeros, uno de ellos, me recomendó que le echará un ojo a:
https://gist.github.com/vishaltelangre/6727962
A modo de resumen, lo que hace este maravilloso Javascript, consiste en esperar a que en nuestra página aparezca una clase, un ID,... En resumen, un objeto en nuestra página y entonces ejecuta lo que nosotros deseemos.
Por ejemplo, teníamos un formulario con Infopath, que queríamos que los campos fueran multiidioma, pero InfoPath Designer, no nos dejaba tocar el código, así que optamos por poner en la página que mostrábamos el formulario, el siguiente código:
<script src="/_catalogs/masterpage/js/jquery.waituntilexists.js"></script>
<script>
$("span.a5_iiYsMdwb7doT5eh1_0:eq(0)").waitUntilExists(function () {
var lcid =_spPageContextInfo.currentLanguage;
switch (lcid)
{
case 1033:
$("span.a0_iiYsMdwb7doT5eh1_0:eq(1)").html("Title");
$("span.a0_iiYsMdwb7doT5eh1_0:eq(2)").html("Description");
$("span.a0_iiYsMdwb7doT5eh1_0:eq(4)").html("Attachments");
$("input#ctl00_m_g_91e536f8_f104_463c_9c16_4fa6c3988842_FormControl0_V1_I1_B10").val("Send");
break;
}
});
</script>
Con ello conseguimos que cuando se cargaba una clase que estaba dentro del formulario, nos cambiará los textos de los campos y botones del formulario a inglés.
Igual hay soluciones alternativas, pero esta solución nos funciono correctamente.
No hay comentarios:
Publicar un comentario