2012-04-04 99 views
2

似乎jQuery UI的和jQuery等JS-库被加载多次,即使我只包括他们曾经在我的网页: enter image description here避免加载jQuery的多次

哪有我避免这个?

UPDATE

我的代码看起来像这样(我已删除的HTML使所有的JavaScript的东西主要部分):

<!doctype html> 
<html lang="en" class="no-js" xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" 
xmlns:fb="http://www.facebook.com/2008/fbml" > 
<head id="hdHead"><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><title> 
    My Page 
</title> 
    <!--Utils--> 
    <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="Mysite" /><meta name="viewport" content="width=980,initial-scale=1.0,maximum-scale=1.0,user-scalable=yes" /> 
    <!-- For iPhone 4 with high-resolution Retina display: --> 
    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/css/touch/gfx/hs-icons/h/apple-touch-icon.png" /> 
    <!-- For first-generation iPad: --> 
    <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/css/touch/gfx/hs-icons/m/apple-touch-icon.png" /> 
    <!-- For non-Retina iPhone, iPod Touch, and Android 2.1+ devices: --> 
    <link rel="apple-touch-icon-precomposed" href="/css/touch/gfx/hs-icons/l/apple-touch-icon-precomposed.png" /> 
    <!-- For nokia devices: --> 
    <link rel="shortcut icon" href="/css/touch/gfx/hs-icons/l/apple-touch-icon.png" /><link rel="shortcut icon" href="/css/gfx/favicon.ico" /> 
    <!-- W3C way of 2005 for XHTML1.0 http://www.w3.org/2005/10/howto-favicon --> 
    <link rel="icon" type="image/png" href="/css/gfx/myspot.ico" /> 
    <!--Styles--> 
    <link href="/plugins/jqueryui/css/custom-theme/jquery-ui-1.8.13.custom.css" rel="stylesheet" type="text/css" /><link rel="stylesheet" href="/css/desktop/myspot.min.css?v=2803" /> 
    <!--[if lt IE 9]> 
    <link rel="stylesheet" href="/css/desktop/myspotoldie.css?v=0114" /> 
    <![endif]--> 
    <!--[if IE]> 
    <link rel="stylesheet" href="/css/desktop/myspotie.css?v=0114" /> 
    <![endif]--> 
    <!--scripts (more in page bottom--> 
    <script src="/scripts/libs/modernizr-1.7.min.js" type="text/javascript"></script> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.11/jquery-ui.min.js" 
     type="text/javascript"></script> 
    <script type="text/javascript"> 
     if (typeof jQuery == 'undefined') { 
      console.log("no jquery"); 
      document.write(unescape('%3Cscript src="/scripts/libs/jquery-1.7.min.js"%3E%3C/script%3E')); 
     } 
     if (typeof jQuery.ui == 'undefined') { 
      console.log("no jquery ui"); 
      document.write(unescape('%3Cscript src="plugins/jqueryui/jquery-ui-1.8.11.min.js"%3E%3C/script%3E')); 
     } 
     var defText = 'Restaurant ved åen...'; 
    </script> 
    <script src="/scripts/desktop/behavior.min.js?v=2803" type="text/javascript"></script> 
    <script type="text/javascript" src="/scripts/libs/jquery.cookie.js"></script> 

    <!--do not move recordOutboundLink to bottom --> 
    <script type='text/javascript'> 
     var googletag = googletag || {}; 
     googletag.cmd = googletag.cmd || []; 
     (function() { 
      var gads = document.createElement('script'); 
      gads.async = true; 
      gads.type = 'text/javascript'; 
      var useSSL = 'https:' == document.location.protocol; 
      gads.src = (useSSL ? 'https:' : 'http:') + 
'//www.googletagservices.com/tag/js/gpt.js'; 
      var node = document.getElementsByTagName('script')[0]; 
      node.parentNode.insertBefore(gads, node); 
     })(); 
</script> 

<script type='text/javascript'> 
    googletag.cmd.push(function() { 
     googletag.defineSlot('/1025597/Place_main_bottom', [468, 60], 'div-gpt-ad-1328824112752-0').addService(googletag.pubads()); 
     googletag.defineSlot('/1025597/Place_sidebar_bottom', [160, 600], 'div-gpt-ad-1328824112752-1').addService(googletag.pubads()); 
     googletag.defineSlot('/1025597/Place_sidebar_middle', [234, 60], 'div-gpt-ad-1328824112752-2').addService(googletag.pubads()); 
     googletag.defineSlot('/1025597/Search_main_bottom', [468, 60], 'div-gpt-ad-1328824112752-3').addService(googletag.pubads()); 
     googletag.defineSlot('/1025597/Search_sidebar_1', [234, 60], 'div-gpt-ad-1328824112752-4').addService(googletag.pubads()); 
     googletag.defineSlot('/1025597/Search_sidebar_2', [234, 60], 'div-gpt-ad-1328824112752-5').addService(googletag.pubads()); 
     googletag.defineSlot('/1025597/Search_sidebar_3', [234, 60], 'div-gpt-ad-1328824112752-6').addService(googletag.pubads()); 
     googletag.defineSlot('/1025597/Search_sidebar_4', [234, 60], 'div-gpt-ad-1328824112752-7').addService(googletag.pubads()); 
     googletag.defineSlot('/1025597/Search_sidebar_5', [234, 60], 'div-gpt-ad-1328824112752-8').addService(googletag.pubads()); 
     googletag.pubads().enableSingleRequest(); 
     googletag.enableServices(); 
    }); 
</script> 


    <script type="text/javascript"> 
     //Tabs 
     jQuery(document).ready(function() { 
      jTabs = jQuery("#tabs").tabs({ 

       select: function (event, ui) { 
        try { 
         var newhasharr = ui.tab.toString().split("#"); 
         window.location.hash = newhasharr[1]; 
        } 
        catch (err) { 
        } 
       } 
      }); 
      LoadTabFromHash(); 
      function LoadTabFromHash() { 
       try { 
        var hash = window.location.hash.replace('#', ''); 
        if (hash != '') { 
         jTabs.tabs("select", hash); 
        } 
       } 
       catch (err) { 
       } 
      } 
      jQuery(".jclickatab").click(function (ev) { 
       ev.preventDefault(); 
       var hash = jQuery(this).attr("href").replace("#", ""); 
       if (hash != '') { 
        jTabs.tabs("select", hash) 
       } 
      }); 
     }); 
    </script> 

     <script type="text/javascript" src="http://yandex.st/jquery/fancybox/1.3.4/jquery.fancybox.min.js"></script> 
</head> 

<body> 

    <form method="post" action="/mypage" onsubmit="javascript:return WebForm_OnSubmit();" id="Form1"> 
<div class="aspNetHidden"> 
</div> 

<script type="text/javascript"> 
//<![CDATA[ 
function WebForm_OnSubmit() { 
ChangeColourOfInvalidControls(); 
return true; 
} 
//]]> 
</script> 

    <div id="fb-root"> 
    </div> 
    <script type="text/javascript"> 
    window.fbAsyncInit = function() { 
     FB.init({ 
      appId: '139505527456', 
      channelUrl: '//www.myspot.dk/channel.html', 
      status: true, 
      cookie: true, 
      xfbml: true 
     }); 
    }; 

    // Load the SDK Asynchronously 
    (function (d) { 
     var js, id = 'facebook-jssdk'; if (d.getElementById(id)) { return; } 
     js = d.createElement('script'); js.id = id; js.async = true; 
     js.src = "//connect.facebook.net/da_DK/all.js"; 
     d.getElementsByTagName('head')[0].appendChild(js); 
    } (document)); 
    </script> 


    <div id="container" class="placepage"> 

      <!-- AddThis Buttons BEGIN --> 
      <div class="addthis_toolbox addthis_default_style addthis_32x32_style"> 
       <a class="addthis_button_facebook_like" fb:like:layout="button_count" fb:like:width="105"> 
       </a> 
      </div> 
      <div class="addthis_toolbox addthis_default_style addthis_32x32_style"> 
       <a class="addthis_button_google_plusone"></a> 
      </div> 
      <script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=myspot"></script> 
      <!-- AddThis Buttons END --> 
     </div> 
<script> 
    jQuery(document).ready(function() { 
     TidyUpPlaceImages(); 

     jQuery(".mainplacepix a").fancybox({ 
      'type': 'image', 
      'transitionIn': 'elastic', 
      'transitionOut': 'elastic', 
      'speedIn': 600, 
      'speedOut': 200, 
      'titlePosition': 'over', 
      'overlayShow': false, 
      'showNavArrows': true 
     }); 
    }); 
    function TidyUpPlaceImages() { 
     var mainImageHeight = jQuery(".mainplacepix a:first").height(); 
     var thumbsHeight = 0; 
     jQuery(".mainplacepix a:gt(0)").each(function (index) { 
      thumbsHeight += jQuery(this).height(); 
      if (thumbsHeight <= mainImageHeight) { 
       jQuery(this).show(); 
      } 
      else { 
       return; 
      } 
     }); 
    } 
</script> 

<script type="text/javascript"> 

jQuery(document).ready(function() { 
    jQuery('#txtReviewBody').keyup(function(event) { 
     if(jQuery(this).val().length>50 && !jQuery('#reviewparametercontainer').is(":visible")) { 
      jQuery('#reviewparametercontainer').slideDown(); 
      _gaq.push(['_trackEvent', 'Reviews', 'LenghtAbove50', 'empty']); 
     } 
    }).blur(function() { 
     if(jQuery(this).val().trim().length<1) { 
      jQuery('#reviewparametercontainer').slideUp(); 
      _gaq.push(['_trackEvent', 'Reviews', 'BlurWithoutWriting', 'empty']); 
     } 
    }); 
    jQuery(".writeReviewDatePicker").datepicker(
    { 
    maxDate: new Date() 
    }); 
}) 

</script> 

<script type="text/javascript"> 
    var reviewErrorMess = 'Some error'; 
    var ratingErrorMess = 'Some error'; 
    var reviewScriptErrorMess = 'Some error'; 
    function validateReviewForm() { 
     var imValid = true; 
     var reviewlength = jQuery('#txtReviewBody').val().length; 
     var myspotrating = jQuery('#rating input[type="hidden"]').val().length; 
     if (reviewlength < 2) { 
      setErrorFeedbackToTheRight(jQuery('#txtReviewBody'), reviewErrorMess); 
      imValid = false; 
     } 
     else { 
      if (jQuery('#txtReviewBody').val().indexOf('<') > -1) { 
       setErrorFeedbackToTheRight(jQuery('#txtReviewBody'), reviewScriptErrorMess); 
       imValid = false; 
      } 
     } 
     if (rating < 1) { 
      setErrorFeedbackToTheRight(jQuery('#rating'), ratingErrorMess); 
      imValid = false; 
     } 

     return imValid; 
    } 
    jQuery(document).ready(function() { 
     jQuery('#ratingmyspot.error').live('click', function() { 
      removeErrorFeedback(jQuery(this)); 
     }); 
     jQuery('textarea.error').live('keyup', function() { 
      removeErrorFeedback(jQuery(this)); 
     }); 
     jQuery('#ddlTypes').change(function (ev) { 
      FilterReviewParams(jQuery(this).val()); 
     }); 
     FilterReviewParams(jQuery('#ddlTypes').val()); 
    }); 
    function FilterReviewParams(categoryId) { 
     var selector = '#reviewParameters .ratingcontrol.' + categoryId; 
     var jAll = jQuery('#reviewParameters .ratingcontrol:visible'); 
     if (jAll.length > 0) { 
      jAll.hide({ 
       duration: 1000, 
       complete: function() { 
        jQuery(selector).show(1000); 
       } 
      }); 
     } 
     else { 
      jQuery(selector).show(1000); 
     } 

    } 
</script> 



<script type="text/javascript"> 
    jQuery(document).ready(function() { 
     jQuery('#listOfOffers input[type="submit"]').button(); 
     if (jQuery(".offersFromDateTimePicker").length > 0) { 
      jQuery(".offersFromDateTimePicker").datetimepicker({ 
       onSelect: function (selectedDate, sender) { 
        setMinDateTime(selectedDate, ".offersEndDateTimePicker"); 
       } 
      }); 
      var minDate = jQuery(".offersFromDateTimePicker").val(); 
      jQuery(".offersEndDateTimePicker").datetimepicker({ 
       minDate: minDate 
      }); 
     } 
    }); 
</script> 
<script type="text/javascript"> 
    jQuery(document).ready(function() { 
     jQuery('#placepageevents input[type="submit"]').button(); 

     if (jQuery(".eventsFromDateTimePicker").length > 0) { 
      jQuery(".eventsFromDateTimePicker").datetimepicker({ 
       onSelect: function (selectedDate, sender) { 
        setMinDateTime(selectedDate, ".eventsEndDateTimePicker"); 
       } 
      }); 
      var minDate = jQuery(".eventsFromDateTimePicker").val(); 
      jQuery(".eventsEndDateTimePicker").datetimepicker({ 
       minDate: minDate 
      }); 
     } 
    }); 
</script> 
     <script type="text/javascript"> 
      jQuery(document).ready(function() { 
       jQuery(".aboutplaceimages a").fancybox({ 
        'type': 'image', 
        'transitionIn': 'elastic', 
        'transitionOut': 'elastic', 
        'speedIn': 600, 
        'speedOut': 200, 
        'titlePosition': 'over', 
        'overlayShow': false, 
        'showNavArrows': true 
       }); 
      }); 
     </script> 
     </footer> 


    <script src="/scripts/libs/jquery.highlightFade.js" type="text/javascript"></script> 
    <script src="/plugins/jqueryui/jquery-ui-timepicker-addon.js" type="text/javascript"></script> 
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
    <script type="text/javascript" src="/scripts/desktop/mygmap.js"></script> 
    <script type="text/javascript" src="/scripts/desktop/place.min.js?v=0310a"></script> 


    </script> 
    <script type='text/javascript'> 
     jQuery.ajax({ 
      url: 'http://demo.easyrec.org:8080/api-js/easyrec.js', 
      dataType: "script", 
      success: function() { 
       if (typeof (easyrec_sendAction) != "undefined") { 
        easyrec_sendAction("view", 
        { 
         itemId: "48863", 
         itemUrl: "/mypage", 
         itemDescription: "Mypage", 
        }); 
       } 
      } 
     }); 
    </script> 

    <link rel="stylesheet" href="/plugins/jquery.fancybox-1.3.4/fancybox/jquery.fancybox-1.3.4.css" 
    type="text/css" media="screen" /> 
    <script src="/plugins/jqueryui/jquery.ui.datepicker-da.js"  type="text/javascript"></script> 
      <script type="text/javascript" src="/scripts/libs/jquery.lazyload.min.js"></script> 
    <script type="text/javascript"> 
     jQuery(document).ready(function() { 
      jQuery("img.lazy").lazyload(); 
     }); 

</script> 



<script type="text/javascript"> 
//<![CDATA[ 
var theForm = document.forms['Form1']; 
if (!theForm) { 
    theForm = document.Form1; 
} 
function __doPostBack(eventTarget, eventArgument) { 
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 
     theForm.__EVENTTARGET.value = eventTarget; 
     theForm.__EVENTARGUMENT.value = eventArgument; 
     theForm.submit(); 
    } 
} 
//]]> 
</script> 


</form> 
</body> 
</html> 

感谢,

托马斯

+2

能否请您添加HTML代码?也许你也在使用其他各种JS框架? – powerMicha 2012-04-04 07:27:40

+0

你在做包括一小段HTML的ajax请求吗? – fcalderan 2012-04-04 07:28:45

+0

确保这不是webkit的bug。尝试firefox中的萤火虫,或检查服务器日志。几个月前,我在使用chrome dev版本时遇到了类似的问题。 – Marakoss 2012-04-04 07:43:51

回答

1

搜索Jquery.min.js文件的解决方案,并确保它没有被引用两次。如果您使用的是母版页或模板,请确保它未在该页面上以及当前正在查看的页面上定义。

+0

在'jquery.min.js'中搜索将非常困难,因为它是jquery的最小化版本。但我很确定它不参考自己 – powerMicha 2012-04-04 07:50:34

1

很显然,你正在使用/加载的jQuery的多个版本,jQuery的UI等,它们绝对是最理想的

例如:

  • jQuery的1.7.min.js
  • jQuery的。 min.js(最新版本1.7.1)
  • jQuery的ui.min.js(版本1.8.11)
  • ...

另外下面的块似乎已经过时,所以尝试删除它,并从您的服务器,而不是谷歌加载JS文件。

<script type="text/javascript"> 
    if (typeof jQuery == 'undefined') { 
     console.log("no jquery"); 
     document.write(unescape('%3Cscript src="/scripts/libs/jquery-1.7.min.js"%3E%3C/script%3E')); 
    } 
    if (typeof jQuery.ui == 'undefined') { 
     console.log("no jquery ui"); 
     document.write(unescape('%3Cscript src="plugins/jqueryui/jquery-ui-1.8.11.min.js"%3E%3C/script%3E')); 
    } 
    var defText = 'Restaurant ved åen...'; 
</script> 

您正在使用许多第三方库,所以我不能保证,他们装载的jQuery以及

+0

嗨。我无法在源代码中找到对jquery的多个引用(除了在我的问题中截图中显示的Google Page Speed的devtools之外)。你有没有找到他们或我错过了什么?关于过时的加载,如果由于某种原因我们无法到达Google的服务器从jquery加载(参见http://snipplr.com/view/16397/conditional-jquery-implementation/),它只是一个后备。非常感谢您的帮助! – ThomasD 2012-04-04 21:24:14

+0

我刚看了一下chrome的开发工具 - >资源,看到上面的jquery文件被列出来了。从谷歌加载的js文件的优点是什么,而不是从你的服务器加载它们?我认为替换它们也会提高性能 – powerMicha 2012-04-05 06:10:10

+1

从Google加载应该会提高性能http://encosia.com/3-reasons-why-you-should-let-google-host-jquery-for-you/ – ThomasD 2012-04-05 22:07:50