@@ -278,35 +278,30 @@ oooooo oooo . .o8
278278Blockly . JavaScript [ 'tutorial_youtube' ] = function ( block ) {
279279 var value_name_ = Blockly . JavaScript . valueToCode ( block , 'name_' , Blockly . JavaScript . ORDER_ATOMIC ) ;
280280 var text_id_ = block . getFieldValue ( 'id_' ) ;
281- var code = 'var checkYoutubeLoad=0;\n' +
282- 'onYouTubeIframeAPIReady();\n' +
283- 'function onYouTubeIframeAPIReady() {\n' +
284- ' ' + value_name_ + ' = new YT.Player("player", {\n' +
285- ' height: "240",\n' +
286- ' width: "100%",\n' +
287- ' videoId: "' + text_id_ + '",\n' +
288- ' playerVars: {\n' +
289- ' "autoplay": 1,\n' +
290- ' "controls": 1},\n' +
291- ' events: {\n' +
292- ' "onReady": onPlayerReady,\n' +
293- ' "onStateChange": onPlayerStateChange\n' +
294- ' }\n' +
295- ' });\n' +
296- '}\n' +
297- 'function onPlayerReady(event) {\n' +
298- ' event.target.playVideo();\n' +
299- ' checkYoutubeLoad=1;\n' +
300- '}\n' +
301- 'var done = false;\n' +
302- 'function onPlayerStateChange(event) {\n' +
303- ' if (event.data == YT.PlayerState.PLAYING && !done) {\n' +
304- ' done = true;\n' +
281+ var code =
282+ '(function () {\n' +
283+ ' var tag = document.createElement("script");\n' +
284+ ' tag.src = "https://www.youtube.com/iframe_api";\n' +
285+ ' var scptTag = document.getElementsByTagName("script")[0];\n' +
286+ ' scptTag.parentNode.insertBefore(tag, scptTag);\n' +
287+ ' window.onYouTubeIframeAPIReady = playVideo;\n\n' +
288+ ' function playVideo() {\n' +
289+ ' ' + value_name_ + ' = new YT.Player("player", {\n' +
290+ ' height: "240",\n' +
291+ ' width: "96%",\n' +
292+ ' videoId: "' + text_id_ + '",\n' +
293+ ' playerVars: {\n' +
294+ ' autoplay: 1,\n' +
295+ ' controls: 1\n' +
296+ ' },\n' +
297+ ' events: {\n' +
298+ ' onReady: function (evt) {\n' +
299+ ' ' + value_name_ + '.playerReady = true;\n' +
300+ ' }\n' +
301+ ' }\n' +
302+ ' });\n' +
305303 ' }\n' +
306- '}\n' +
307- 'function stopVideo() {\n' +
308- ' ' + value_name_ + '.stopVideo();\n' +
309- '}\n' ;
304+ '}());\n\n' ;
310305 return code ;
311306} ;
312307
@@ -316,42 +311,42 @@ Blockly.JavaScript['tutorial_youtube_volume'] = function (block) {
316311 var varA = Blockly . JavaScript . variableDB_ . getDistinctName (
317312 'varA' , Blockly . Variables . NAME_TYPE ) ;
318313 var code = 'var ' + varA + ' = ' + value_volume_ + ';\n' +
319- ' if (' + varA + '>= 100){\n' +
320- ' ' + varA + '= 100;\n' +
321- ' }\n' +
322- ' if(checkYoutubeLoad==1) {\n' +
323- ' ' + variable_name_ + '.setVolume(' + varA + ');\n' +
324- ' }\n' ;
314+ 'if (' + varA + ' >= 100) {\n' +
315+ ' ' + varA + ' = 100;\n' +
316+ '}\n' +
317+ 'if (' + variable_name_ + '.playerReady) {\n' +
318+ ' ' + variable_name_ + '.setVolume(' + varA + ');\n' +
319+ '}\n' ;
325320 return code ;
326321} ;
327322
328323
329324Blockly . JavaScript [ 'tutorial_youtube_speed' ] = function ( block ) {
330325 var variable_name_ = Blockly . JavaScript . variableDB_ . getName ( block . getFieldValue ( 'name_' ) , Blockly . Variables . NAME_TYPE ) ;
331326 var dropdown_speed_ = block . getFieldValue ( 'speed_' ) ;
332- var code = ' if(checkYoutubeLoad==1) {\n' +
333- ' ' + variable_name_ + '.setPlaybackRate(' + dropdown_speed_ + ');\n' +
334- ' }\n' ;
327+ var code = 'if (' + variable_name_ + '.playerReady) {\n' +
328+ ' ' + variable_name_ + '.setPlaybackRate(' + dropdown_speed_ + ');\n' +
329+ '}\n' ;
335330 return code ;
336331} ;
337332
338333Blockly . JavaScript [ 'tutorial_youtube_control' ] = function ( block ) {
339334 var variable_name_ = Blockly . JavaScript . variableDB_ . getName ( block . getFieldValue ( 'name_' ) , Blockly . Variables . NAME_TYPE ) ;
340335 var dropdown_status_ = block . getFieldValue ( 'status_' ) ;
341336 var code ;
342- if ( dropdown_status_ == '1' ) {
343- code = ' if(checkYoutubeLoad==1) {\n' +
344- ' ' + variable_name_ + '.playVideo();\n' +
345- ' }\n' ;
346- } else if ( dropdown_status_ == '2' ) {
347- code = ' if(checkYoutubeLoad==1) {\n' +
348- ' ' + variable_name_ + '.pauseVideo();\n' +
349- ' }\n' ;
350- } else if ( dropdown_status_ == '0' ) {
351- code = ' if(checkYoutubeLoad==1) {\n' +
352- ' ' + variable_name_ + '.stopVideo( );\n' +
353- ' ' + variable_name_ + '.seekTo(0 );\n' +
354- ' }\n' ;
337+ if ( dropdown_status_ == '1' ) {
338+ code = 'if (' + variable_name_ + '.playerReady) {\n' +
339+ ' ' + variable_name_ + '.playVideo();\n' +
340+ '}\n' ;
341+ } else if ( dropdown_status_ == '2' ) {
342+ code = 'if (' + variable_name_ + '.playerReady) {\n' +
343+ ' ' + variable_name_ + '.pauseVideo();\n' +
344+ '}\n' ;
345+ } else if ( dropdown_status_ == '0' ) {
346+ code = 'if (' + variable_name_ + '.playerReady) {\n' +
347+ ' ' + variable_name_ + '.seekTo(0 );\n' +
348+ ' ' + variable_name_ + '.stopVideo( );\n' +
349+ '}\n' ;
355350 }
356351 return code ;
357352} ;
0 commit comments