2012-04-11 14 views
7

StackExchange MiniProfiler'ı, jQuery öğesinin v1.7.1'ine başvuran bir ASP.NET WebForms sayfasında uygulamıştım. jQuery dosyası yerel olarak barındırılan, yani benim anadosya şöyle görünür: Ben üretilen çıktının kaynağı görüntülediğinizdeMiniProfiler, sayfada zaten yüklediğim halde neden jquery-1.7.1'i yükler?

Ancak
<script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script> 
<%= MiniProfiler.RenderIncludes() %> 

, ben bu

<script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script> 
<script type="text/javascript">  
    ... 
    load('/app/mini-profiler-resources/jquery.1.7.1.js?v=tNlJPuyuHLy/d5LQjyDuRbWKa0weCpmO3xkO6MH4TtA=', initMp); 
</script> 

benzer bir şey dev bakıyor olsun araçlar ağ sekmesi, Scripts/jquery-1.7.1.min.js için bir tane ve /app/mini-profiler-resources/jquery.1.7.1.js

için iki istekte bulunduğunu görebiliyorum, bu oldukça büyük bir fazlalık sorunu değil mi? MiniProfiler'ın jQuery kitaplığının başka bir kopyasını istemek, indirmek ve ayrıştırmaktan nasıl ayıracağım?

cevap

10

nedeni noConflict içinde jQuery yükleniyor olmasıdır. Bu jQuery sürümleri çatışması riskini ortadan kaldırır. Örneğin, jQuery sürüm 1.0 sayfada ise MiniProfiler hala çalışacağından emin değiliz. Herhangi bir riski önlemek için kendi versiyonumuzu yüklüyoruz. "Doğru" sürüm biz sadece takma jQueryMPjQuery için varsa

Şimdi, bunu istemeden önce jQuery üzerinde bir sürüm denetimi yapar çekme isteğine açığım. Ancak, bu kodu zorlaştırır ve sorunu yalnızca jQuery'nin tek bir sürümü için çözer.

+2

Açıklama için teşekkürler. JQuery yüklemesini seçmek için "RenderIncludes()" yöntemine bir varsayılan 'bool = true' argümanı eklenmeye değer mi? Daha sonra, sayfanın başka bir yerinde doğru sürümü yüklediklerini bilen kullanıcılar daha sonra "RenderIncludes (false)" ifadesini kullanabilirler. Bu uygun bir yaklaşım olduğunu düşünüyorsanız, bacak işi yapmaktan mutlu. Bir yama için – growse

+3

ince, belki de RenderIncludes (useExistingjQuery: true) - bu sırayla 'jQueryMP = jQuery; 'oluşturmak yerine –

+1

yükleme En son sürümde, StackExchange.Profiling.MiniProfiler.Settings.UseExistingjQuery = true; – pbz

0

, farklı URL’lere sahip olduklarından, bunlar tarayıcı için farklı kaynaklardır. Belki de eklediğiniz 1. senaryoya ihtiyacınız yoktur.

veya bu kesmek deneyin:

<script src="/app/mini-profiler-resources/jquery.1.7.1.js?v=tNlJPuyuHLy/d5LQjyDuRbWKa0weCpmO3xkO6MH4TtA="></script> 
+0

Neden tarayıcının her iki komut dosyasını da yüklediğini sormuyorum, MiniProfiler tarafından oluşturulan otomatik kodun neden önceden yüklenmiş bir betik yüklemeye karar verdiğimi ve bunu nasıl kapatabileceğimi soruyorum. MiniProfiler yoksa herhangi çalıştırmaz growse

+0

benim ikinci cümle okumak işlenmedi mi? – Gavriel

+1

Ve sonra komut jQuery dayanmaktadır: kaldırın: – growse

İlgili konular