2009-03-18 5 views
7

Vi una sesión PDC por Stephen Walther y en la presentación que se refería a archivo de la jQuery js como la siguiente:¿Cuál es la mejor manera de hacer referencia a jquery en asp.net?

<asp:ScriptManager id="sm1" runat="server"> 
<Scripts> 
    <asp:ScriptReference Path="~/Scripts/JQuery.js" /> 
</Scripts> 
</asp:ScriptManager> 

¿Hay alguna ventaja o desventaja para hacerlo de la manera más arriba en lugar de usar un enlace en la sección de la cabeza de la página.

También estaba poniendo lo siguiente en la sección de Javascript de sus páginas de muestra para funcionar JQuery:

<script type="text/javascript"> 

function pageLoad() 
{ 
    $(":text").css("background-color","yellow"); 
} 
</script> 

¿Está el NECESARIO pageLoad arriba? Mencionó que es de la biblioteca de Microsoft AJAX y espera que el DOM termine de cargarse, pero pensé que el símbolo de $ en JQuery es solo una abreviatura de esperar a que el DOM termine de cargarse.

Respuesta

8

$ (documento) .ready() y pageLoad() no son lo mismo.

http://encosia.com/2009/03/25/document-ready-and-pageload-are-not-the-same/

Desde el artículo:

pageLoad() es llamado justo después de la DOM ha terminado de cargar. este no es el único punto en el que se llama a pageLoad(): también se llama después de cada devolución parcial.

En el caso del código de inicialización que debería ejecutarse una vez, $ (documento) .ready() es la solución ideal.

+1

Entonces, si estoy usando la biblioteca de Microsoft AJAX, tengo que llamar a pageLoad, pero si solo estoy usando JQuery, no, ¿correcto? – Xaisoft

+0

no TIENES que pero tienes la opción de. personalmente uso jQuery way $ (function() {}); todo el tiempo si tengo o no cargadas las bibliotecas MS AJAX. –

+0

Creo que hay una diferencia entre el documento jQuery listo y el material de JavaScript PageLoad ... – RSolberg

3

Agregar sus secuencias de comandos a través de ScriptManager de esa manera tiene la ventaja de facilitar la concatenación + minificación de sus archivos mediante el uso de CompositeScript. Desafortunadamente, eso significa que se les hará referencia en la página a través de ScriptResource.axd, que siempre he encontrado que es una solución extremadamente desagradable.

Estoy mucho más interesado en integrar algo como juicer en mi proceso de compilación, pero no se puede vencer ScriptManager para mayor comodidad.

+0

Si tiene una página maestra, ¿coloca el ScriptManager solo en la página maestra? – Xaisoft

+0

Eso depende de usted. Si lo hace, puede usar ScriptManagerProxy en las páginas secundarias. –

+0

Ok, entonces si coloca el ScriptManager en la página maestra, no puede colocar otro ScriptManager en una página que está usando la página maestra, sino que debería usar el ScriptManagerProxy. ¿Correcto? – Xaisoft

4

Al utilizar ScriptManager, ASP.NET puede crear un solo Script compuesto para reducir el número de solicitudes del navegador, y también si el navegador lo admite, comprime el script.

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
    <CompositeScript> 
     <Scripts> 
      <asp:ScriptReference Path="~/Scripts/Script1.js" /> 
      <asp:ScriptReference Path="~/Scripts/Script2.js" /> 
      <asp:ScriptReference Path="~/Scripts/Script3.js" /> 
     </Scripts> 
    </CompositeScript> 
</asp:ScriptManager> 
+0

Soy nuevo en esto. ¿Qué quieres decir con solo script compuesto? – Xaisoft

+0

http://msdn.microsoft.com/en-us/library/cc488552.aspx –

+0

ASP.NET combina todos los archivos .js en un único script comprimido antes de enviarlo al navegador. Es bueno si está usando múltiples scripts no minificados. –

4

Si usted está buscando la manera de hacer referencia al archivo de jQuery, esto es lo que estoy haciendo:

<script type="text/javascript" src="Scripts/jquery.js"></script> 

Ya que va a tener el ScriptManager en su página, también será capaz de aprovechar en PageLoad.

function pageLoad() { 
    //MSAJAX Stuff... If Needed 
} 

$(document).ready(function() { 
    $.datepicker.setDefaults($.datepicker.regional[$("#<%= hfCultureAbbreviation.ClientID %>").val()]); 
}); 
+0

Así es como normalmente lo hacía. ¿Por qué necesitas el PageLoad? y estoy en javascript, ¿qué hacen los métodos Sys.WebForms.PageRequestManager.getInstance() en su ejemplo? – Xaisoft

+0

@Xaisoft - crea 2 funciones de JavaScript para mí que se ejecutan después de que se completa una solicitud AJAX y una antes de que la solicitud se envíe de vuelta al servidor. Esto ayuda con la validación, etc. con algunos componentes de la interfaz de usuario jQuery y otras necesidades del sistema. – RSolberg

+0

Nuevo en javascript, por lo que es un poco sobre mi cabeza, pero gracias por el ejemplo. – Xaisoft

2

¡No olvide registrar el archivo Intellisense también! A veces puede ser bastante útil.

+0

Tenía curiosidad por qué no me estaba entendiendo. ¿Dónde puedo encontrar ese archivo? – Xaisoft

+0

http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.3.2-vsdoc.js –

+0

Simplemente guarde el archivo vsdoc en la misma carpeta que su jquery-1.3.2-min. js o jquery-1.3.2.js –

Cuestiones relacionadas