@@ -206,25 +206,30 @@ Blockly.JavaScript['demo_range_input_value'] = function (block) {
206206Blockly . JavaScript [ 'demo_youtube' ] = function ( block ) {
207207 var value_name_ = Blockly . JavaScript . valueToCode ( block , 'name_' , Blockly . JavaScript . ORDER_ATOMIC ) ;
208208 var text_id_ = block . getFieldValue ( 'id_' ) ;
209- var code = 'function onYouTubeIframeAPIReady() {\n' +
210- ' ' + value_name_ + ' = new YT.Player("player", {\n' +
211- ' height: "240",\n' +
212- ' width: "96%",\n' +
213- ' videoId: "' + text_id_ + '",\n' +
214- ' playerVars: {\n' +
215- ' "autoplay": 1,\n' +
216- ' "controls": 1},\n' +
217- ' events: {\n' +
218- ' "onReady": onPlayerReady,\n' +
219- ' },\n' +
220- ' playerReady: false\n' +
221- ' });\n' +
222- ' function onPlayerReady(event) {\n' +
223- ' event.target.playVideo();\n' +
224- ' ' + value_name_ + '.playerReady=true;\n' +
209+ var code =
210+ '(function () {\n' +
211+ ' var tag = document.createElement("script");\n' +
212+ ' tag.src = "https://www.youtube.com/iframe_api";\n' +
213+ ' var scptTag = document.getElementsByTagName("script")[0];\n' +
214+ ' scptTag.parentNode.insertBefore(tag, scptTag);\n' +
215+ ' window.onYouTubeIframeAPIReady = playVideo;\n\n' +
216+ ' function playVideo() {\n' +
217+ ' ' + value_name_ + ' = new YT.Player("player", {\n' +
218+ ' height: "240",\n' +
219+ ' width: "96%",\n' +
220+ ' videoId: "' + text_id_ + '",\n' +
221+ ' playerVars: {\n' +
222+ ' autoplay: 1,\n' +
223+ ' controls: 1\n' +
224+ ' },\n' +
225+ ' events: {\n' +
226+ ' onReady: function (evt) {\n' +
227+ ' ' + value_name_ + '.playerReady = true;\n' +
228+ ' }\n' +
229+ ' }\n' +
230+ ' });\n' +
225231 ' }\n' +
226- '}\n\n' +
227- 'onYouTubeIframeAPIReady();\n\n' ;
232+ '}());\n\n' ;
228233 return code ;
229234} ;
230235
@@ -235,22 +240,22 @@ Blockly.JavaScript['demo_youtube_volume'] = function (block) {
235240 var varA = Blockly . JavaScript . variableDB_ . getDistinctName (
236241 'varA' , Blockly . Variables . NAME_TYPE ) ;
237242 var code = 'var ' + varA + ' = ' + value_volume_ + ';\n' +
238- ' if (' + varA + '>= 100){\n' +
239- ' ' + varA + '= 100;\n' +
240- ' }\n' +
241- ' if (' + variable_name_ + '.playerReady){\n' +
242- ' ' + variable_name_ + '.setVolume(' + varA + ');\n' +
243- ' }\n' ;
243+ 'if (' + varA + ' >= 100) {\n' +
244+ ' ' + varA + ' = 100;\n' +
245+ '}\n' +
246+ 'if (' + variable_name_ + '.playerReady) {\n' +
247+ ' ' + variable_name_ + '.setVolume(' + varA + ');\n' +
248+ '}\n' ;
244249 return code ;
245250} ;
246251
247252
248253Blockly . JavaScript [ 'demo_youtube_speed' ] = function ( block ) {
249254 var variable_name_ = Blockly . JavaScript . variableDB_ . getName ( block . getFieldValue ( 'name_' ) , Blockly . Variables . NAME_TYPE ) ;
250255 var dropdown_speed_ = block . getFieldValue ( 'speed_' ) ;
251- var code = ' if (' + variable_name_ + '.playerReady){\n' +
252- ' ' + variable_name_ + '.setPlaybackRate(' + dropdown_speed_ + ');\n' +
253- ' }\n' ;
256+ var code = 'if (' + variable_name_ + '.playerReady) {\n' +
257+ ' ' + variable_name_ + '.setPlaybackRate(' + dropdown_speed_ + ');\n' +
258+ '}\n' ;
254259 return code ;
255260} ;
256261
@@ -260,18 +265,18 @@ Blockly.JavaScript['demo_youtube_control'] = function (block) {
260265 var dropdown_status_ = block . getFieldValue ( 'status_' ) ;
261266 var code ;
262267 if ( dropdown_status_ == '1' ) {
263- code = ' if (' + variable_name_ + '.playerReady){\n' +
264- ' ' + variable_name_ + '.playVideo();\n' +
265- ' }\n' ;
268+ code = 'if (' + variable_name_ + '.playerReady) {\n' +
269+ ' ' + variable_name_ + '.playVideo();\n' +
270+ '}\n' ;
266271 } else if ( dropdown_status_ == '2' ) {
267- code = ' if (' + variable_name_ + '.playerReady){\n' +
268- ' ' + variable_name_ + '.pauseVideo();\n' +
269- ' }\n' ;
272+ code = 'if (' + variable_name_ + '.playerReady) {\n' +
273+ ' ' + variable_name_ + '.pauseVideo();\n' +
274+ '}\n' ;
270275 } else if ( dropdown_status_ == '0' ) {
271- code = ' if (' + variable_name_ + '.playerReady){\n' +
272- ' ' + variable_name_ + '.seekTo(0);\n' +
273- ' ' + variable_name_ + '.stopVideo();\n' +
274- ' }\n' ;
276+ code = 'if (' + variable_name_ + '.playerReady) {\n' +
277+ ' ' + variable_name_ + '.seekTo(0);\n' +
278+ ' ' + variable_name_ + '.stopVideo();\n' +
279+ '}\n' ;
275280 }
276281 return code ;
277282} ;
@@ -280,7 +285,7 @@ Blockly.JavaScript['demo_youtube_control'] = function (block) {
280285Blockly . JavaScript [ 'demo_youtube_status' ] = function ( block ) {
281286 var variable_name_ = Blockly . JavaScript . variableDB_ . getName ( block . getFieldValue ( 'name_' ) , Blockly . Variables . NAME_TYPE ) ;
282287 var dropdown_status_ = block . getFieldValue ( 'status_' ) ;
283- var code = variable_name_ + '.getPlayerState()== ' + dropdown_status_ ;
288+ var code = variable_name_ + '.getPlayerState() == ' + dropdown_status_ ;
284289 return [ code , Blockly . JavaScript . ORDER_ATOMIC ] ;
285290} ;
286291
0 commit comments