@@ -10,6 +10,20 @@ window.addEventListener("load", function() {
10
10
// If there's no ecmascript 5 support, don't try to initialize
11
11
if ( ! Object . create || ! window . JSON ) return ;
12
12
13
+ var sandboxHint = null ;
14
+ if ( window . chapNum && window . chapNum < 20 && window . localStorage && ! localStorage . getItem ( "usedSandbox" ) ) {
15
+ var pres = document . getElementsByTagName ( "pre" ) ;
16
+ for ( var i = 0 ; i < pres . length ; i ++ ) {
17
+ var pre = pres [ i ] ;
18
+ if ( ! / ^ ( t e x t \/ ) ? ( j a v a s c r i p t | h t m l ) $ / . test ( pre . getAttribute ( "data-language" ) ) ||
19
+ chapNum == 1 && ! / c o n s o l e \. l o g / . test ( pre . textContent ) ) continue ;
20
+ sandboxHint = elt ( "div" , { "class" : "sandboxhint" } ,
21
+ "edit & run code by clicking it" ) ;
22
+ pre . appendChild ( sandboxHint ) ;
23
+ break ;
24
+ }
25
+ }
26
+
13
27
document . body . addEventListener ( "click" , function ( e ) {
14
28
for ( var n = e . target ; n ; n = n . parentNode ) {
15
29
if ( n . className == "c_ident" ) return ;
@@ -69,6 +83,12 @@ window.addEventListener("load", function() {
69
83
var article = document . getElementsByTagName ( "article" ) [ 0 ] ;
70
84
71
85
function activateCode ( node , e , lang ) {
86
+ if ( sandboxHint ) {
87
+ sandboxHint . parentNode . removeChild ( sandboxHint ) ;
88
+ sandboxHint = null ;
89
+ localStorage . setItem ( "usedSandbox" , "true" ) ;
90
+ }
91
+
72
92
var code = node . textContent ;
73
93
var wrap = node . parentNode . insertBefore ( elt ( "div" , { "class" : "editor-wrap" } ) , node ) ;
74
94
var editor = CodeMirror ( function ( div ) { wrap . insertBefore ( div , wrap . firstChild ) } , {
0 commit comments