1
0
mirror of https://github.com/golang/go synced 2024-11-22 04:34:39 -07:00

doc: don't block page load on JavaScript fetch

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/12050045
This commit is contained in:
Andrew Gerrand 2013-07-30 14:22:14 +10:00
parent 789e1c351e
commit d920d8d849
5 changed files with 72 additions and 64 deletions

View File

@ -296,7 +296,7 @@ CodewalkViewer.prototype.updateHeight = function() {
this.sizer.height(codeHeight); this.sizer.height(codeHeight);
}; };
jQuery(document).ready(function() { window.initFuncs.push(function() {
var viewer = new CodewalkViewer(jQuery('#codewalk-main')); var viewer = new CodewalkViewer(jQuery('#codewalk-main'));
viewer.selectFirstComment(); viewer.selectFirstComment();
viewer.targetCommentLinksAtBlank(); viewer.targetCommentLinksAtBlank();

View File

@ -163,6 +163,52 @@ function setupDropdownPlayground() {
$('#menu').css('min-width', '+=60'); $('#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. // fixFocus tries to put focus to div#page so that keyboard navigation works.
function fixFocus() { function fixFocus() {
var page = $('div#page'); 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() { $(document).ready(function() {
bindSearchEvents(); bindSearchEvents();
generateTOC(); generateTOC();
@ -196,8 +251,16 @@ $(document).ready(function() {
bindToggleLinks(".examplesLink", ""); bindToggleLinks(".examplesLink", "");
bindToggleLinks(".indexLink", ""); bindToggleLinks(".indexLink", "");
setupDropdownPlayground(); setupDropdownPlayground();
setupInlinePlayground();
fixFocus(); fixFocus();
toggleHash(); 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]();
}); });
})(); })();

View File

@ -116,7 +116,7 @@ function feedLoaded(result) {
} }
} }
$(function() { window.initFuncs.push(function() {
// Set up playground. // Set up playground.
playground({ playground({
"codeEl": "#learn .code", "codeEl": "#learn .code",

View File

@ -8,14 +8,10 @@
<title>The Go Programming Language</title> <title>The Go Programming Language</title>
{{end}} {{end}}
<link type="text/css" rel="stylesheet" href="/doc/style.css"> <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}} {{if .SearchBox}}
<link rel="search" type="application/opensearchdescription+xml" title="godoc" href="/opensearch.xml" /> <link rel="search" type="application/opensearchdescription+xml" title="godoc" href="/opensearch.xml" />
{{end}} {{end}}
<script type="text/javascript">window.initFuncs = [];</script>
</head> </head>
<body> <body>
@ -87,13 +83,12 @@ and code is licensed under a <a href="/LICENSE">BSD license</a>.<br>
</div><!-- .container --> </div><!-- .container -->
</div><!-- #page --> </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> </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> </html>

View File

@ -224,53 +224,3 @@
<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> <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}}
{{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}}