0

ウェブサイトを最適化し、 Google アナリティクス ツールを使用してスコアを確認しています。

私は多くの記事を参照し、stackoverflow.com でも調査しましたが、適切な解決策は得られませんでした。

私の問題は、すべての .js ファイルをページの末尾の body タグの近くに配置したことですが、分析ではJavascriptの延期が示され、js ファイルのリストが表示されます。

aspx ファイルのコードは次のとおりです。

<body>  
    <script type="text/javascript" src="js/default.js"></script>

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

    <!--[if lt IE 9]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->

    <script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-35073844-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

    </script>

</body>

defer 属性も試してみましたが、スコアに変化はありません。

以下に示すように、JavaScriptコードも試しました。

<script type="text/javascript">

 // Add a script element as a child of the body
 function downloadJSAtOnload() {
 var element = document.createElement("script");
 element.src = "js/jquery.prettyPhoto.js";
 document.body.appendChild(element);
 }

 // Check for browser support of event handling capability
 if (window.addEventListener)
 window.addEventListener("load", downloadJSAtOnload, false);
 else if (window.attachEvent)
 window.attachEvent("onload", downloadJSAtOnload);
 else window.onload = downloadJSAtOnload;

</script> 

しかし、まだ変化はありません。

javascript を完全に理解するために延期することに関するリンクをいくつか取得できますか?

私はJavaScriptの経験があまりありません。

助けてください。ありがとうございました。

4

1 に答える 1

0

歴史的にすべてのブラウザが延期をサポートしているわけではないので、どのブラウザでテストしたかについては言及していませんが、サポートは今でははるかに優れています(http://caniuse.com/script-defer

Aarron Petersは、onloadが起動するまでJSを延期することについて良い投稿を書きましたhttp://www.aaronpeters.nl/blog/why-loading-third-party-scripts-async-is-not-good-enough

彼のコードは基本的に次のようになります。

<script>
(function(w, d, s) {
  function go(){
    var js, fjs = d.getElementsByTagName(s)[0], load = function(url, id) {
    if (d.getElementById(id)) {return;}
       js = d.createElement(s); js.src = url; js.id = id;
       fjs.parentNode.insertBefore(js, fjs);
    };
    load('//connect.facebook.net/en_US/all.js#appId=272697932759946&xfbml=1', 'fbjssdk');
    load('https://apis.google.com/js/plusone.js', 'gplus1js');
    load('//platform.twitter.com/widgets.js', 'tweetjs');
  }
  if (w.addEventListener) { w.addEventListener("load", go, false); }
  else if (w.attachEvent) { w.attachEvent("onload",go); }
}(window, document, 'script'));
</script>

個人的には、要素が延期されるポイントを宣言的に指定する方法を好みますdefer="onload"が、それにはいくつかの問題があります。

于 2013-02-16T11:36:30.313 に答える