]> Cypherpunks.ru repositories - gostls13.git/commitdiff
doc: don't block page load on JavaScript fetch
authorAndrew Gerrand <adg@golang.org>
Tue, 30 Jul 2013 04:22:14 +0000 (14:22 +1000)
committerAndrew Gerrand <adg@golang.org>
Tue, 30 Jul 2013 04:22:14 +0000 (14:22 +1000)
R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/12050045

doc/codewalk/codewalk.js
doc/godocs.js
doc/root.html
lib/godoc/godoc.html
lib/godoc/package.html

index eb4667ac0c0911b0d09e5e4fcb49f7eca31a209f..7bfcd39384144a5d27b6095f1c47bffd7579842c 100644 (file)
@@ -296,7 +296,7 @@ CodewalkViewer.prototype.updateHeight = function() {
   this.sizer.height(codeHeight);
 };
 
-jQuery(document).ready(function() {
+window.initFuncs.push(function() {
   var viewer = new CodewalkViewer(jQuery('#codewalk-main'));
   viewer.selectFirstComment();
   viewer.targetCommentLinksAtBlank();
index d82451047668577750575ccaf7fe4dd4e0d18f55..8003a1fe8cc40dd01dafe182bc1efd003e72c897 100644 (file)
@@ -163,6 +163,52 @@ function setupDropdownPlayground() {
   $('#menu').css('min-width', '+=60');
 }
 
+function setupInlinePlayground() {
+       'use strict';
+       // Set up playground when each element is toggled.
+       $('div.play').each(function (i, el) {
+               // Set up playground for this example.
+               var setup = function() {
+                       var code = $('.code', el);
+                       playground({
+                               'codeEl':   code,
+                               'outputEl': $('.output', el),
+                               'runEl':    $('.run', el),
+                               'fmtEl':    $('.fmt', el),
+                               'shareEl':  $('.share', el),
+                               'shareRedirect': 'http://play.golang.org/p/'
+                       });
+
+                       // Make the code textarea resize to fit content.
+                       var resize = function() {
+                               code.height(0);
+                               var h = code[0].scrollHeight;
+                               code.height(h+20); // minimize bouncing.
+                               code.closest('.input').height(h);
+                       };
+                       code.on('keydown', resize);
+                       code.on('keyup', resize);
+                       code.keyup(); // resize now.
+               };
+               
+               // If example already visible, set up playground now.
+               if ($(el).is(':visible')) {
+                       setup();
+                       return;
+               }
+
+               // Otherwise, set up playground when example is expanded.
+               var built = false;
+               $(el).closest('.toggle').click(function() {
+                       // Only set up once.
+                       if (!built) {
+                               setup();
+                               built = true;
+                       }
+               });
+       });
+}
+
 // fixFocus tries to put focus to div#page so that keyboard navigation works.
 function fixFocus() {
   var page = $('div#page');
@@ -186,6 +232,15 @@ function toggleHash() {
     }
 }
 
+function addPlusButtons() {
+  var po = document.createElement('script');
+  po.type = 'text/javascript';
+  po.async = true;
+  po.src = 'https://apis.google.com/js/plusone.js';
+  var s = document.getElementsByTagName('script')[0];
+  s.parentNode.insertBefore(po, s);
+}
+
 $(document).ready(function() {
   bindSearchEvents();
   generateTOC();
@@ -196,8 +251,16 @@ $(document).ready(function() {
   bindToggleLinks(".examplesLink", "");
   bindToggleLinks(".indexLink", "");
   setupDropdownPlayground();
+  setupInlinePlayground();
   fixFocus();
   toggleHash();
+  addPlusButtons();
+
+  // godoc.html defines window.initFuncs in the <head> tag, and root.html and
+  // codewalk.js push their on-page-ready functions to the list.
+  // We execute those functions here, to avoid loading jQuery until the page
+  // content is loaded.
+  for (var i = 0; i < window.initFuncs.length; i++) window.initFuncs[i]();
 });
 
 })();
index e2d53414e724926864d1ab6bffdb67d5083daf22..e952a76bb3dca7275e7a3ad2d99c0724de304533 100644 (file)
@@ -116,7 +116,7 @@ function feedLoaded(result) {
        }
 }
 
-$(function() {
+window.initFuncs.push(function() {
        // Set up playground.
        playground({
                "codeEl":        "#learn .code",
index bd524c22f290f9b7e4066444f161f7b38c4482b0..ccf5b6ed6ab3a1491d11ba9cca1a40a4853796a8 100644 (file)
@@ -8,14 +8,10 @@
   <title>The Go Programming Language</title>
 {{end}}
 <link type="text/css" rel="stylesheet" href="/doc/style.css">
-<script type="text/javascript" src="/doc/jquery.js"></script>
-{{if .Playground}}
-<script type="text/javascript" src="/doc/play/playground.js"></script>
-{{end}}
-<script type="text/javascript" src="/doc/godocs.js"></script>
 {{if .SearchBox}}
 <link rel="search" type="application/opensearchdescription+xml" title="godoc" href="/opensearch.xml" />
 {{end}}
+<script type="text/javascript">window.initFuncs = [];</script>
 </head>
 <body>
 
@@ -87,13 +83,12 @@ and code is licensed under a <a href="/LICENSE">BSD license</a>.<br>
 </div><!-- .container -->
 </div><!-- #page -->
 
+<script type="text/javascript" src="/doc/jquery.js"></script>
+{{if .Playground}}
+<script type="text/javascript" src="/doc/play/playground.js"></script>
+{{end}}
+<script type="text/javascript" src="/doc/godocs.js"></script>
+
 </body>
-<script type="text/javascript">
-  (function() {
-    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
-    po.src = 'https://apis.google.com/js/plusone.js';
-    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
-  })();
-</script>
 </html>
 
index d71e953ec560b092b3cbdfac5f3d5d66d8aab5f3..8d28652fc3493365b3cdd0f2c8ee578bfceb6516 100644 (file)
        <p>Need more packages? Take a look at the <a href="http://code.google.com/p/go-wiki/wiki/Projects">Go Projects wiki page</a>.</p>
        {{end}}
 {{end}}
-
-{{if $.Examples}}
-<script>
-$(document).ready(function() {
-       'use strict';
-       // Set up playground when each element is toggled.
-       $('div.play').each(function (i, el) {
-               // Set up playground for this example.
-               var setup = function() {
-                       var code = $('.code', el);
-                       playground({
-                               'codeEl':   code,
-                               'outputEl': $('.output', el),
-                               'runEl':    $('.run', el),
-                               'fmtEl':    $('.fmt', el),
-                               'shareEl':  $('.share', el),
-                               'shareRedirect': 'http://play.golang.org/p/'
-                       });
-
-                       // Make the code textarea resize to fit content.
-                       var resize = function() {
-                               code.height(0);
-                               var h = code[0].scrollHeight;
-                               code.height(h+20); // minimize bouncing.
-                               code.closest('.input').height(h);
-                       };
-                       code.on('keydown', resize);
-                       code.on('keyup', resize);
-                       code.keyup(); // resize now.
-               };
-               
-               // If example already visible, set up playground now.
-               if ($(el).is(':visible')) {
-                       setup();
-                       return;
-               }
-
-               // Otherwise, set up playground when example is expanded.
-               var built = false;
-               $(el).closest('.toggle').click(function() {
-                       // Only set up once.
-                       if (!built) {
-                               setup();
-                               built = true;
-                       }
-               });
-       });
-});
-</script>
-{{end}}