Controlar que un script se carga una sola vez

Preguntado hace 1 año

JuanP

JuanP

481Distinciones de plata1Distinciones de bronce6
Votos
PositivosNegativosTotal
2 0 2
57 Visualizaciones
Compártelo: Compártelo en twitterCompártelo en Facebook

Buenas, tengo un control grid que hereda de control y hace un render a mano. El problema es que necesita un fichero javascript y que puede haber más de un control-grid por página de modo que habría que insertar el script, pero no por cada grid si no una sola vez, ¿cómo puedo controlar esto?

Actualizando datos
Por lo que sé, es cierto, pero en cualquier caso estaría enviando la etiqueta script más veces de las que debería :S Gracias :) JuanP hace 1 año
No estoy seguro del todo, pero me suena que el tema de los links y demás recusos enlazados en una página web lo suele gestionar la caché del propio navegador para evitar acceder varias veces a los recursos repetidos, pero claro si el navegador está configurado para que no use nada de caché estaríamos como al principio. Sé que esto no es de mucha ayuda y por eso lo pongo como un comentario. Rafa hace 1 año

2 Respuestas

Hace 1 año

Julián Mur
Editada hace 1 año
Votos
PositivosNegativosTotal
202

Otra opción sería meter un método público en la masterpage como este:

public void IncluirScript(String ruta)
{ 

    foreach(ScriptReference referencia in this.ScriptManagerMaster.Scripts)
    {
        if (referencia.Path.ToLower() == ruta.ToLower())
        {
            return;
        }
    }
    this.ScriptManagerMaster.Scripts.Add(new ScriptReference(ruta));
}

De modo que si está incluido escapa de la función y si no lo está después del bucle lo incluye.

Saludos.

Cerrar

Hace 1 año

MaLKaV_eS
Votos
PositivosNegativosTotal
101

Yo tengo una solución "chapuza", que consiste en tener en el body de la página o del master un literal, con ID "script".

En el load del control, busco el literal y compruebo si contiene la etiqueta completa del script que quiero insertar. Si no aparece, lo cargo.

Literal scripts = (Literal)this.Page.Master.FindControl("ltScripts");

if (scripts != null)
{
   if (!scripts.Text.Contains("<script type='text/javascript' src='/js/personas.js'></script>"))
   {
       scripts.Text += "<script type='text/javascript' src='/js/personas.js'></script>";
    }
}

Espero que esto te pueda servir.

Un saludo

Cerrar

Tu respuesta

Confirmación

Cerrar

Si sales ahora, perderás los cambios. ¿Estás seguro de querer salir?

Para participar en Babelias, debes estar convenientemente validado. Si ya eres usuario inicia sesión, si no lo eres, te puedes registrar.

Dar una respuesta

Trata de ser descriptivo, usa al menos 25 caracteres