{"id":69429,"date":"2025-08-15T03:01:00","date_gmt":"2025-08-14T17:01:00","guid":{"rendered":"https:\/\/www.rjmprogramming.com.au\/ITblog\/?p=69429"},"modified":"2025-08-14T21:39:41","modified_gmt":"2025-08-14T11:39:41","slug":"youtube-audio-only-mobile-looping-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/youtube-audio-only-mobile-looping-tutorial\/","title":{"rendered":"YouTube Audio Only Mobile Looping Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"YouTube Audio Only Mobile Looping Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/youtube_audio_only_textarea.png\" title=\"YouTube Audio Only Mobile Looping Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">YouTube Audio Only Mobile Looping Tutorial<\/p><\/div>\n<p>Further to the recent <a title='External Javascript YouTube Audio of Video Research Tutorial' href='#ejytavrt'>External Javascript YouTube Audio of Video Research Tutorial<\/a> &#8230;<\/p>\n<ul>\n<li>we have made the textarea text stand out more<\/li>\n<li>the loop lines up to any looping tick presented<\/li>\n<li>we&#8217;ve improved the looping logic<\/li>\n<\/ul>\n<p>  &#8230; in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html-----------------------------------------------------------------------GETME\" rel=\"noopener\">the changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html-----------------------------------------------------------------------GETME\" rel=\"noopener\">karaoke_youtube_api.htm<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm\" rel=\"noopener\">inhouse YouTube video interfacer<\/a> calling <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html-------------------------------------------------GETME\" rel=\"noopener\">the modified<\/a> and <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html--------------------------------------------------GETME\" rel=\"noopener\">further improved<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html--------------------------------------------------GETME\" rel=\"noopener\">stop_start_youtube.html<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html\" rel=\"noopener\">YouTube API caller<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/youtube-audio-only-mobile-looping-tutorial\/' rel=\"noopener\">YouTube Audio Only Mobile Looping Tutorial<\/a>.<\/p-->\n<hr>\n<p id='ejytavrt'>Previous relevant <a target=\"_blank\" title='External Javascript YouTube Audio of Video Research Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-research-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Research Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_switch_g.gif\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"External Javascript YouTube Audio of Video Research Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_switch_g.gif\" title=\"External Javascript YouTube Audio of Video Research Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">External Javascript YouTube Audio of Video Research Tutorial<\/p><\/div>\n<p>In the same line of thinking as yesterday&#8217;s <a title='External Javascript YouTube Audio of Video Switch Tutorial' href='#ejytavst'>External Javascript YouTube Audio of Video Switch Tutorial<\/a> we probably have a little more room in that textarea (user interactions menu) for a couple more switch\/class hotkey options, in the <i>research<\/i> line of thinking, we&#8217;ll call &#8230;<\/p>\n<blockquote><p>\nG=Google<br \/>\nW=Wikipedia\n<\/p><\/blockquote>\n<p> &#8230; the first having an obvious connection, where the title of a <a target=\"_blank\" title='YouTube' href='https:\/\/youtube.com' rel=\"noopener\">YouTube<\/a> video is likely to resonate with <a target=\"_blank\" title='Google' href='https:\/\/google.com' rel=\"noopener\">Google<\/a>.<\/p>\n<p>But do you ever &#8220;go fishing&#8221; in <a target=\"_blank\" title='Wikipedia' href='https:\/\/wikipedia.org' rel=\"noopener\">Wikipedia<\/a>?  It won&#8217;t give up on you<sup>&nbsp;<font size=1>even if you are asking for strange information, <a target=\"_blank\" title='?' href='https:\/\/www.youtube.com\/watch?v=PtR4cWb4HNg' rel=\"noopener\">that is<\/a><\/font><\/sup>, suggesting other avenues to research using <i>&#8220;words, basically&#8221;<\/i>.<\/p>\n<p>And so, like with yesterday (and it&#8217;s work <font color=brown>augmented a bit<\/font>), we&#8217;ve got to say the Javascript <a href='#ffunction' style='color:magenta;'>function playingvideo<\/a>&#8216;s <a onclick=\"setTimeout(function(){ window.open('\/\/www.w3schools.com\/js\/js_switch.asp','_blank','top=200,left=' + eval(-600 + eval('' + screen.width)) + ',width=600,height=500');   }, 5000);\" href='#fswitch' style='color:blue;'>switch<\/a> and  <a href='#fcase' style='color:purple;'>case<\/a> based logic stuck out because the coding involves words that relate to functionality far better than an <i>if<\/i> code structure.  And so all we needed to do for our change, between the Javascript&#8217;s <a onclick=\"setTimeout(function(){ window.open('\/\/www.w3schools.com\/js\/js_switch.asp','_blank','top=200,left=' + eval(-600 + eval('' + screen.width)) + ',width=600,height=500');   }, 5000);\" href='#fswitch' style='color:blue;'>switch<\/a> and first <a href='#fcase' style='color:purple;'>case<\/a> was add &#8230;<\/p>\n<p><code><br \/>\n                 <font color=purple>case 'Y':<\/font><br \/>\n                   <font color=brown>if (document.URL.indexOf('start=') != -1 && document.URL.indexOf('start=0') == -1) {<br \/>\n                   window.open('\/\/www.youtube.com\/watch?v=' + vid + '&t=' + document.URL.split('start=')[1].split('&')[0].split('#')[0] + 's', '_blank', 'top=100,left=100,width=600,height=600');<br \/>\n                   } else {<\/font><br \/>\n                   window.open('\/\/www.youtube.com\/watch?v=' + vid, '_blank', 'top=100,left=100,width=600,height=600');<br \/>\n                   <font color=brown>}<\/font><br \/>\n                   parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   <font color=purple>break;<\/font><br \/>\n<br \/>\n                 <font color=purple>case 'G':<\/font><br \/>\n                   window.open('\/\/www.google.com\/search?q=' + encodeURIComponent(parent.document.getElementsByTagName('h1')[0].innerHTML), '_blank', 'top=110,left=110,width=600,height=600');<br \/>\n                   parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   <font color=purple>break;<\/font><br \/>\n<br \/> <br \/>\n                 <font color=purple>case 'W':<\/font><br \/>\n                   window.open('\/\/wikipedia.org\/wiki\/' + encodeURIComponent(parent.document.getElementsByTagName('h1')[0].innerHTML), '_blank', 'top=120,left=120,width=600,height=600');<br \/>\n                   parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   <font color=purple>break;<\/font><br \/>\n<br \/> <br \/>\n<\/code><\/p>\n<p> &#8230; still only involving changes to <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html-----------------------------------GETME\" rel=\"noopener\">the modified<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html-----------------------------------GETME\" rel=\"noopener\">stop_start_youtube.html<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html\" rel=\"noopener\">YouTube API caller<\/a> to <a href='#sra'>make happen<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-research-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Research Tutorial<\/a>.<\/p-->\n<hr>\n<p id='ejytavst'>Previous relevant <a target=\"_blank\" title='External Javascript YouTube Audio of Video Switch Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-switch-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Switch Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_switch.gif\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"External Javascript YouTube Audio of Video Switch Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_switch.gif\" title=\"External Javascript YouTube Audio of Video Switch Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">External Javascript YouTube Audio of Video Switch Tutorial<\/p><\/div>\n<p>If we say &#8230;<\/p>\n<ol>\n<li>switch &#8230; and then &#8230;<\/li>\n<li>case<\/li>\n<\/ol>\n<p> &#8230; related to Javascript coding, what&#8217;s the reaction around here?  Well, we&#8217;d say &#8230;<\/p>\n<blockquote><p>\nOne of the most relatable and easily revisited modus operandi, within Javascript, to pick up where you left off or add more\n<\/p><\/blockquote>\n<p>Doesn&#8217;t exactly &#8220;roll off the tongue&#8221;, but we&#8217;ll leave that for you should you read this blog posting, and agree?!<\/p>\n<p>In a similar line of thinking as <a title='External Javascript YouTube Audio of Video Snippet Tutorial' href='#xejytavst'>External Javascript YouTube Audio of Video Snippet Tutorial<\/a>, what did we want to achieve with today&#8217;s modification to <a target=\"_blank\" title='YouTube' href='https:\/\/youtube.com' rel=\"noopener\">YouTube<\/a> Audio of Video Stream Play <strike><sup>Only<\/sup><\/strike> web application, is, once the user is into the YouTube play and you get to that textarea menu that works like a hotkey <font size=1>(and we can thank that for what must have been clear and relatable thinking that day)<\/font> is to add a <i>Y<\/i> hotkey possibility to open a popup window back to a YouTube based play of the video concerned.<\/p>\n<p>We&#8217;ve got to say the Javascript <a href='#ffunction' style='color:magenta;'>function playingvideo<\/a>&#8216;s <a onclick=\"setTimeout(function(){ window.open('\/\/www.w3schools.com\/js\/js_switch.asp','_blank','top=200,left=' + eval(-600 + eval('' + screen.width)) + ',width=600,height=500');   }, 5000);\" href='#fswitch' style='color:blue;'>switch<\/a> and  <a href='#fcase' style='color:purple;'>case<\/a> based logic stuck out because the coding involves words that relate to functionality far better than an <i>if<\/i> code structure.  And so all we needed to do for our change, between the Javascript&#8217;s <a onclick=\"setTimeout(function(){ window.open('\/\/www.w3schools.com\/js\/js_switch.asp','_blank','top=200,left=' + eval(-600 + eval('' + screen.width)) + ',width=600,height=500');   }, 5000);\" href='#fswitch' style='color:blue;'>switch<\/a> and first <a href='#fcase' style='color:purple;'>case<\/a> was add &#8230;<\/p>\n<p><code><br \/>\n                 <font color=purple>case 'Y':<\/font><br \/>\n                   window.open('\/\/www.youtube.com\/watch?v=' + vid, '_blank', 'top=100,left=100,width=600,height=600');<br \/>\n                   parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   <font color=purple>break;<\/font><br \/>\n<br \/> <br \/>\n<\/code><\/p>\n<p> &#8230; and only involving changes to <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html----------------------------------GETME\" rel=\"noopener\">the modified<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html----------------------------------GETME\" rel=\"noopener\">stop_start_youtube.html<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html\" rel=\"noopener\">YouTube API caller<\/a> to <a href='#sra'>make happen<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-snippet-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Switch Tutorial<\/a>.<\/p-->\n<hr>\n<p id='xejytavst'>Previous relevant <a target=\"_blank\" title='External Javascript YouTube Audio of Video Snippet Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-snippet-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Snippet Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_search_snippet.gif\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"External Javascript YouTube Audio of Video Snippet Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_search_snippet.gif\" title=\"External Javascript YouTube Audio of Video Snippet Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">External Javascript YouTube Audio of Video Snippet Tutorial<\/p><\/div>\n<p>Given the current <i>Play Audio Stream of Selected YouTube Video In Place<\/i> functionality talked about, last, at <a title='External Javascript YouTube Audio of Video Numericals Tutorial' href='#ejytavnt'>External Javascript YouTube Audio of Video Numericals Tutorial<\/a> occurs &#8220;in place&#8221; there&#8217;s a good chance what the user may want to describe is either &#8230;<\/p>\n<ul>\n<li>audio starting at a given timed position &#8230;<\/li>\n<li>audio starting at a given timed position and ending at another timed position &#8230; ie. an audio <i>snippet<\/i><\/li>\n<\/ul>\n<p>.  Well, today, we&#8217;re allowing for either possibility above to value add to our work.<\/p>\n<p>So, <a target=\"_blank\" title='YouTube' href='http:\/\/youtube.com' rel=\"noopener\">YouTube<\/a> URLs are already possible in the first of the modes above, such as the URL &#8230;<\/p>\n<p><code><br \/>\n<a target=\"_blank\" title='https:\/\/www.youtube.com\/watch?v=cLsgc8S33dE&#038;t=21m25s' href='https:\/\/www.youtube.com\/watch?v=cLsgc8S33dE&#038;t=21m25s' rel=\"noopener\">https:\/\/www.youtube.com\/watch?v=cLsgc8S33dE&t=21m25s<\/a><br \/>\n<\/code><\/p>\n<p> &#8230; and we augment that possibility by stopping the <strike>video<\/strike>audio starting at that same starting point <font color=magenta>but making use of hashtag thinking<\/font> to add &#8230;<\/p>\n<p><code><br \/>\n<a target=\"_blank\" title='https:\/\/www.youtube.com\/watch?v=cLsgc8S33dE&#038;t=21m25s#d=5' href='https:\/\/www.youtube.com\/watch?v=cLsgc8S33dE&#038;t=21m25s#d=5' rel=\"noopener\">https:\/\/www.youtube.com\/watch?v=cLsgc8S33dE&t=21m25s<\/a><font color=magenta>#d=5<\/font><br \/>\n<\/code><\/p>\n<p> &#8230; used by <span id=\"sra\"><span><a target=\"_blank\" class=\"audioytplay\" title=\"https:\/\/www.youtube.com\/watch?v=cLsgc8S33dE\" href=\"https:\/\/www.youtube.com\/watch?v=cLsgc8S33dE&#038;t=21m25s#d=5\" rel=\"noopener\">this link<\/a><\/span><\/span> or &#8230;<\/p>\n<p><code><br \/>\n<a target=\"_blank\" title='https:\/\/www.youtube.com\/watch?v=cLsgc8S33dE&#038;t=21m25s#e=21m30s' href='https:\/\/www.youtube.com\/watch?v=cLsgc8S33dE&#038;t=21m25s#e=21m30s' rel=\"noopener\">https:\/\/www.youtube.com\/watch?v=cLsgc8S33dE&t=21m25s<\/a><font color=magenta>#e=21m30s<\/font><br \/>\n<\/code><\/p>\n<p> &#8230; means &#8230;<\/p>\n<p><code><br \/>\n           altend='22223';<br \/>\n           spos='0';<br \/>\n           if (('' + audioonlyas[iuhg].href).split('&gt;')[0].split('youtube.com\/watch?v=')[1].replace('#t','&t').indexOf('&t=') != -1) { \/\/ &t=2m37s<br \/>\n             sposspare=('' + audioonlyas[iuhg].href).split('&gt;')[0].split('youtube.com\/watch?v=')[1].replace('#t','&t').split('&t=')[1].split('&')[0].split('#')[0].split('\"')[0].split(\"'\")[0].split('&gt;')[0];<br \/>\n             if (sposspare.indexOf(':') != -1) {<br \/>\n               for (idel=eval(-1 + sposspare.split(':').length); idel&gt;=0; idel--) {<br \/>\n                 spos='' + eval(eval('' + spos) + eval(deltv[idel] * eval('' + sposspare.split(':')[idel]  )));<br \/>\n               }<br \/>\n             } else {<br \/>\n  \/\/alert(sposspare);<br \/>\n               for (idel=3; idel&gt;=0; idel--) {<br \/>\n                if (sposspare.indexOf(delts[idel]) != -1) {<br \/>\n                 spos='' + eval(eval('' + spos) + eval(deltv[idel] * eval('' + sposspare.split(delts[idel])[0].slice(-3).replace(delts[0],'').replace(delts[1],'').replace(delts[2],'').replace(delts[3],'')  )));<br \/>\n                } else if (idel == 3 && sposspare.indexOf(delts[2]) == -1 && sposspare.indexOf(delts[1]) == -1 && sposspare.indexOf(delts[0]) == -1) {<br \/>\n                 spos='' + sposspare;<br \/>\n                }<br \/>\n               }<br \/>\n             }<br \/>\n           }<br \/>\n           if (('' + audioonlyas[iuhg].href).split('&gt;')[0].split('youtube.com\/watch?v=')[1].indexOf('#e=') != -1) { \/\/ &t=2m37s<br \/>\n             sposspare=('' + audioonlyas[iuhg].href).split('&gt;')[0].split('youtube.com\/watch?v=')[1].split('#e=')[1].split('&')[0].split('#')[0].split('\"')[0].split(\"'\")[0].split('&gt;')[0];<br \/>\n             if (sposspare.indexOf(':') != -1) {<br \/>\n               altend='0.000';<br \/>\n               for (idel=eval(-1 + sposspare.split(':').length); idel&gt;=0; idel--) {<br \/>\n                 altend='' + eval(eval('' + altend) + eval(deltv[idel] * eval('' + sposspare.split(':')[idel]  )));<br \/>\n               }<br \/>\n             } else {<br \/>\n               altend='0.000';<br \/>\n               for (idel=3; idel&gt;=0; idel--) {<br \/>\n                if (sposspare.indexOf(delts[idel]) != -1) {<br \/>\n                 altend='' + eval(eval('' + altend) + eval(deltv[idel] * eval('' + sposspare.split(delts[idel])[0].slice(-3).replace(delts[0],'').replace(delts[1],'').replace(delts[2],'').replace(delts[3],'')  )));<br \/>\n                } else if (idel == 3 && sposspare.indexOf(delts[2]) == -1 && sposspare.indexOf(delts[1]) == -1 && sposspare.indexOf(delts[0]) == -1) {<br \/>\n                 altend='' + eval(eval('' + altend) + eval('' + sposspare));<br \/>\n                }<br \/>\n               }<br \/>\n             }<br \/>\n           }<br \/>\n           if (('' + audioonlyas[iuhg].href).split('&gt;')[0].split('youtube.com\/watch?v=')[1].indexOf('#d') != -1) { \/\/ &t=2m37s<br \/>\n           if (('' + audioonlyas[iuhg].href).split('&gt;')[0].split('youtube.com\/watch?v=')[1].split('#d')[1].indexOf('=') != -1) { \/\/ &t=2m37s<br \/>\n             sposspare=('' + audioonlyas[iuhg].outerHTML).split('&gt;')[0].split('youtube.com\/watch?v=')[1].split('#d')[1].split('=')[1].split('&')[0].split('#')[0].split('\"')[0].split(\"'\")[0].split('&gt;')[0];<br \/>\n             if (sposspare.indexOf(':') != -1) {<br \/>\n               altend=spos.split('.')[0] + '.000';<br \/>\n               for (idel=eval(-1 + sposspare.split(':').length); idel&gt;=0; idel--) {<br \/>\n                 altend='' + eval(eval('' + altend) + eval(deltv[idel] * eval('' + sposspare.split(':')[idel]  )));<br \/>\n               }<br \/>\n             } else {<br \/>\n               altend=spos.split('.')[0] + '.000';<br \/>\n               for (idel=3; idel&gt;=0; idel--) {<br \/>\n                if (sposspare.indexOf(delts[idel]) != -1) {<br \/>\n                 altend='' + eval(eval('' + altend) + eval(deltv[idel] * eval('' + sposspare.split(delts[idel])[0].slice(-3).replace(delts[0],'').replace(delts[1],'').replace(delts[2],'').replace(delts[3],'')  )));<br \/>\n                } else if (idel == 3 && sposspare.indexOf(delts[2]) == -1 && sposspare.indexOf(delts[1]) == -1 && sposspare.indexOf(delts[0]) == -1) {<br \/>\n                 altend='' + eval(eval('' + altend) + eval('' + sposspare));<br \/>\n                }<br \/>\n               }<br \/>\n             }<br \/>\n           }<br \/>\n           \/\/alert('spos=' + spos + ' and altend=' + altend);<br \/>\n           }<br \/>\n<\/code><\/p>\n<p> &#8230; by which you can define a 5 second snippet of YouTube cLsgc8S33dE audio stream (of video) starting at 21m 25s be played, perhaps looping, in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/ytaudioonly.js------GETME\" rel=\"noopener\">our changed<\/a> external Javascript <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/ytaudioonly.js------GETME\" rel=\"noopener\">ytaudioonly.js<\/a> external Javascript supports <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html------------------------------------------------GETME\" rel=\"noopener\">the changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html------------------------------------------------GETME\" rel=\"noopener\">karaoke_youtube_api.htm<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm\" rel=\"noopener\">inhouse YouTube video interfacer<\/a> calling <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html-------------------------GETME\" rel=\"noopener\">the modified<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html-------------------------GETME\" rel=\"noopener\">stop_start_youtube.html<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html\" rel=\"noopener\">YouTube API caller<\/a> in our quest to play YouTube audio &#8220;in place&#8221; in useful ways via &#8230;<\/p>\n<p><code><br \/>\n&lt;script type='text\/javascript' src='\/\/www.rjmprogramming.com.au\/ytaudioonly.js'&gt;&lt;\/script&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; within the <i>head<\/i> section of a webpage massaging how <font color=blue>a link such as<\/font> &#8230;<\/p>\n<p><code><br \/>\n&lt;a target=\"_blank\" <font color=blue>class=\"audioytplay\"<\/font> title=\"https:\/\/www.youtube.com\/watch?v=cLsgc8S33dE\" href=\"https:\/\/www.<font color=blue>youtube.com\/watch?v=<\/font>cLsgc8S33dE&t=21m25s#d=5\" rel=\"noopener\"&gt;this link&lt;\/a&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; behaves.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-numericals-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Numericals Tutorial<\/a>.<\/p-->\n<hr>\n<p id='ejytavnt'>Previous relevant <a target=\"_blank\" title='External Javascript YouTube Audio of Video Numericals Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-numericals-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Numericals Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_search.png\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"External Javascript YouTube Audio of Video Numericals Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_search.png\" title=\"External Javascript YouTube Audio of Video Numericals Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">External Javascript YouTube Audio of Video Numericals Tutorial<\/p><\/div>\n<p>Regarding yesterday&#8217;s <a title='External Javascript YouTube Audio of Video Fallback Tutorial' href='#ejytavft'>External Javascript YouTube Audio of Video Fallback Tutorial<\/a> &#128251;&#127926; (&amp;#128251;&amp;#127926;) emoji <font size=1>(non-mobile showing)<\/font> title attribute now goes something like &#8230;<\/p>\n<blockquote><p>\nRight click opens in new window the video and audio but normal click just plays audio in place.  <font color=purple>Numerical only entry in textarea seeks that audio timing position.<\/font>  <font color=blue>Numerical space search text does YouTube search of search text to create the numerical number of audio only YouTube video links.  Eg. 7 octopus anatomy<\/font>\n<\/p><\/blockquote>\n<p> &#8230; and the <font color=purple>purple<\/font> functionality has been going two days now, because we found it convenient debugging the <i>fallback<\/i> logic, while the <font color=blue>blue<\/font> is today&#8217;s new functionality which opens the door to a user creating their own dynamically created <i>audio stream part of <a title=YouTube href='http:\/\/youtube.com'>YouTube<\/a> video playing<\/i> links presented close to yesterday&#8217;s textarea element information &#8230; <font size=1>perhaps three doors down from<\/font> <font size=2><a target=\"_blank\" class=\"audioytplay\" title=\"https:\/\/www.youtube.com\/watch?v=sD-zTwi3_GU\" href='https:\/\/www.youtube.com\/watch?v=sD-zTwi3_GU' rel=\"noopener\">MacArthur Park<\/a>?<\/font><\/p>\n<p>This new hierarchical layer had us questioning, <span><a target=\"_blank\" class=\"audioytplay\" title=\"https:\/\/www.youtube.com\/watch?v=e9_7GcQeiqw\" href=\"https:\/\/www.youtube.com\/watch?v=e9_7GcQeiqw&#038;t=2m37s#d=9\" rel=\"noopener\">again<\/a><\/span>, our &#8220;grandchild&#8221; logic penchant of referring to the layer containing these link references like &#8230;<\/p>\n<p><code><br \/>\n  <strong>top.<\/strong>document.getElementById('ajaxxx_myajaxxx').placeholder<br \/>\n<\/code><\/p>\n<p> &#8230; when, now, it could be the case, sandwiched between, can be this new hierarchical layer.  And so, the awkward feeling &#8230;<\/p>\n<p><code><br \/>\n  <strong>parent.parent.<\/strong>document.getElementById('ajaxxx_myajaxxx').placeholder<br \/>\n<\/code><\/p>\n<p> &#8230; is the better and more precise way a &#8220;grandchild&#8221; can refer to a &#8220;grandparent&#8221; exclusively.  Of course, in hindsight, on a project, these hierarchy possibilities would probably be mapped out for every eventuality, and the penchant for a programmer to <span><a target=\"_blank\" class=\"audioytplay\" title=\"https:\/\/www.youtube.com\/watch?v=cLsgc8S33dE\" href=\"https:\/\/www.youtube.com\/watch?v=cLsgc8S33dE&#038;t=21m25s#d=5\" rel=\"noopener\">willy-nilly<\/a><\/span> use <strong>top.<\/strong>document everywhere, could be put under the microscope.  But, please don&#8217;t declare war on all <strong>top.<\/strong>document reference thinking &#8230; for instance, to share data among many such layers of web application functionality, it can be effectively shared in &#8230;<\/p>\n<p><code><br \/>\n  <strong>top.<\/strong>document.title<br \/>\n<\/code><\/p>\n<p> &#8230; as just one example of effective <strong>top.<\/strong>document referencing.  There is also the issue that <strong>parent.parent.<\/strong>document type references can make someone maintaining the code later suspect the codeline as a bug <font size=1>(and maybe a codeline comment could help)<\/font>.<\/p>\n<p>The new Javascript function needed <font color=purple>for this<\/font> goes &#8230;<\/p>\n<p><code><br \/>\n      function ytsearch(intysidea) {<br \/>\n        var afternums='', isanum=true, beforenums='', wasph='';<br \/>\n        for (var ihj=0; ihj&lt;intysidea.length; ihj++) {<br \/>\n           if (isanum) {<br \/>\n             if (intysidea.substring(ihj).substring(0,1) &lt; '0' || intysidea.substring(ihj).substring(0,1) &gt; '9') {<br \/>\n               isanum=false;<br \/>\n               if (intysidea.substring(ihj).substring(0,1) != ' ') {<br \/>\n                 afternums+=intysidea.substring(ihj).substring(0,1);<br \/>\n               }<br \/>\n             } else {<br \/>\n               beforenums+=intysidea.substring(ihj).substring(0,1);<br \/>\n             }<br \/>\n           } else {<br \/>\n             afternums+=intysidea.substring(ihj).substring(0,1);<br \/>\n           }<br \/>\n        }<br \/>\n        parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n        if (afternums.trim() != '') {<br \/>\n         if (parent.parent.document.getElementById('yts' + location.hash.replace(\/\\#\/g,'').substring(3).split('_')[0])) {<br \/>\n          wasph=parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder;<br \/>\n          parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder='';<br \/>\n          parent.parent.document.getElementById('yts' + location.hash.replace(\/\\#\/g,'').substring(3).split('_')[0]).src='\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm?youtubeid=++++++++++++' + encodeURIComponent(afternums) + '&audioonlys=' + (beforenums.trim() == '' ? '5' : beforenums) + '&paridis=' + ouraidis + '&wasph=' + encodeURIComponent(wasph) + '#tonlyaudios';<br \/>\n          parent.parent.document.getElementById('' + location.hash.replace(\/\\#\/g,'').substring(3).split('_')[0]).scrollIntoView();<br \/>\n         } else if (top.document.getElementById('ldi' + location.hash.replace(\/\\#\/g,'').substring(3).split('_')[0])) {<br \/>\n          wasph=parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder;<br \/>\n          parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder='';<br \/>\n          parent.parent.document.getElementById('ldi' + location.hash.replace(\/\\#\/g,'').substring(3).split('_')[0]).innerHTML+='&lt;iframe style=height:250px; id=\"yts' +  + ouraidis + '\" src=\"' + '\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm?youtubeid=++++++++++++' + encodeURIComponent(afternums) + '&audioonlys=' + (beforenums.trim() == '' ? '5' : beforenums) + '&paridis=' + ouraidis + '&wasph=' + encodeURIComponent(wasph) + '#tonlyaudios\"&gt;&lt;\/iframe&gt;';<br \/>\n          parent.parent.document.getElementById('' + location.hash.replace(\/\\#\/g,'').substring(3).split('_')[0]).scrollIntoView();<br \/>\n          parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder=wasph;<br \/>\n         } else {<br \/>\n          wasph=parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder;<br \/>\n          parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder='';<br \/>\n          parent.parent.document.getElementById('' + location.hash.replace(\/\\#\/g,'').substring(3).split('_')[0]).innerHTML+='&lt;iframe style=height:250px; id=\"yts' +  + ouraidis + '\" src=\"' + '\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm?youtubeid=++++++++++++' + encodeURIComponent(afternums) + '&audioonlys=' + (beforenums.trim() == '' ? '5' : beforenums) + '&paridis=' + ouraidis + '&wasph=' + encodeURIComponent(wasph) + '#tonlyaudios\"&gt;&lt;\/iframe&gt;';<br \/>\n          parent.parent.document.getElementById('' + location.hash.replace(\/\\#\/g,'').substring(3).split('_')[0]).scrollIntoView();<br \/>\n          parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder=wasph;<br \/>\n         }<br \/>\n        }<br \/>\n      }<br \/>\n<\/code><\/p>\n<p> &#8230; and <font color=magenta>connected to<\/font> that <sup>non-<\/sup>onblur event approach &#8230;<\/p>\n<p><code><br \/>\n      <font color=magenta id=ffunction>function playingvideo() {<\/font><br \/>\n          inplaying=true;<br \/>\n          if (thatisit) { inplaying=false; return ''; }<br \/>\n          psuf='';<br \/>\n          if (startagain) {<br \/>\n             if (1 == 6 && navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n             psuf=' via button reclick ' + String.fromCodePoint(10004);<br \/>\n             } else {<br \/>\n             psuf=' ' + String.fromCodePoint(10004);<br \/>\n             }<br \/>\n          }<br \/>\n          if (('' + location.hash).replace(\/^undefined\/g,'').replace(\/^null\/g,'').replace(\/\\#\/g,'') != '') {<br \/>\n            if (eval('' + duration) == 0 && Math.round(player.getCurrentTime()) &lt; 1) {<br \/>\n                   if (one == 1 || onepause != 1) {<br \/>\n                     if (1 == 4) { player.pauseVideo(); }<br \/>\n                   } else {<br \/>\n                     player.playVideo();<br \/>\n                   }<br \/>\n              if (!inplaying) { inplaying=true; setTimeout(playingvideo, 1000); }<br \/>\n            } else {<br \/>\n            if (parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,''))) {<br \/>\n              if (('' + parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).getAttribute('data-val')).replace(\/^undefined\/g,'').replace(\/^null\/g,'') != '') {<br \/>\n                   parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).value= parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).getAttribute('data-val');<br \/>\n                   parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).setAttribute('data-val','');<br \/>\n              }<br \/>\n              <font id=fswitch color=blue>switch (('' + parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).value.toUpperCase() + ' ').substring(0,1)) { <\/font><br \/>\n                 <font id=fcase color=purple>case 'L':<\/font><br \/>\n                   if (numericalssamecount &lt;= 0) {<br \/>\n                   startagain=true;<br \/>\n                   if (('' + window.sessionStorage.getItem('loop_' + vid.split(',')[0])).replace(\/^undefined\/g,'').replace(\/^null\/g,'').trim() == '') {<br \/>\n                   setInterval(retry, 5000);<br \/>\n                   } else {<br \/>\n                   window.sessionStorage.removeItem('loop_' + vid);<br \/>\n                   }<br \/>\n                   window.sessionStorage.setItem('loop_' + vid, 'y');<br \/>\n          psuf='';<br \/>\n          if (startagain) {<br \/>\n             psuf=' ' + String.fromCodePoint(10004);<br \/>\n          }<br \/>\n                   dostumps=false;<br \/>\n                   parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   } else {<br \/>\n                   numericalssamecount++;<br \/>\n                   }<br \/>\n                   <font color=purple>break;<\/font><br \/>\n<br \/>\n                 <font color=purple>case 'S':<\/font><br \/>\n                   if (numericalssamecount &lt;= 0) {<br \/>\n                   startagain=false;<br \/>\n          psuf='';<br \/>\n          if (startagain) {<br \/>\n             psuf=' ' + String.fromCodePoint(10004);<br \/>\n          }<br \/>\n                   dostumps=true;<br \/>\n                   player.stopVideo();<br \/>\n                   parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   try {<br \/>\n                     window.sessionStorage.removeItem('loop_' + vid);<br \/>\n                   } catch(hdgf) { }<br \/>\n                   } else {<br \/>\n                   numericalssamecount++;<br \/>\n                   }<br \/>\n                   <font color=purple>break;<\/font><br \/>\n<br \/>\n                 <font color=purple>case 'P':<\/font><br \/>\n                   if (numericalssamecount &lt;= 0) {<br \/>\n                   if (one == 1 || onepause != 1) {<br \/>\n                     player.pauseVideo();<br \/>\n                   } else {<br \/>\n                     player.playVideo();<br \/>\n                   }<br \/>\n                   parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   } else {<br \/>\n                   numericalssamecount++;<br \/>\n                   }<br \/>\n                   <font color=purple>break;<\/font><br \/>\n<br \/>\n                 <font color=purple>case 'M':<\/font><br \/>\n                   if (numericalssamecount &lt;= 0) {<br \/>\n                   player.mute();<br \/>\n                   parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).removeAttribute('data-mute');<br \/>\n                   parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).setAttribute('data-mute', 'y');<br \/>\n                   mletter='M';<br \/>\n                   uletter='u';<br \/>\n                   parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   } else {<br \/>\n                   numericalssamecount++;<br \/>\n                   }<br \/>\n                   <font color=purple>break;<\/font><br \/>\n<br \/>\n                 <font color=purple>case 'U':<\/font><br \/>\n                   if (numericalssamecount &lt;= 0) {<br \/>\n                   player.unMute();<br \/>\n                   parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).removeAttribute('data-mute');<br \/>\n                   parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).setAttribute('data-mute', '');<br \/>\n                   mletter='m';<br \/>\n                   uletter='U';<br \/>\n                   parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   } else {<br \/>\n                   numericalssamecount++;<br \/>\n                   }<br \/>\n                   <font color=purple>break;<\/font><br \/>\n<br \/>\n                 <font color=purple>case '0':<br \/>\n                 case '1':<br \/>\n                 case '2':<br \/>\n                 case '3':<br \/>\n                 case '4':<br \/>\n                 case '5':<br \/>\n                 case '6':<br \/>\n                 case '7':<br \/>\n                 case '8':<br \/>\n                 case '9':<\/font><br \/>\n                   if (2 == 2 || !navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n                      if (numericals == '') {<br \/>\n                        numericalssamecount=1;<br \/>\n                        numericals=parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).value;<br \/>\n                        setTimeout(sanitycheck, 12000);<br \/>\n                      } else if (parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).value == numericals) {<br \/>\n                        numericalssamecount++;<br \/>\n                        if (numericalssamecount &gt;= 10) {<br \/>\n                           if (numericals.replace(\/0\/g,'').replace(\/1\/g,'').replace(\/2\/g,'').replace(\/3\/g,'').replace(\/4\/g,'').replace(\/5\/g,'').replace(\/6\/g,'').replace(\/7\/g,'').replace(\/8\/g,'').replace(\/9\/g,'').trim() == '') {<br \/>\n                              if (eval(numericals) &gt;= 0 && eval(numericals) &lt;= eval('' + duration)) {<br \/>\n                                player.seekTo(eval(numericals.trim()));<br \/>\n                              }<br \/>\n                              parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                              numericals='';<br \/>\n                              numericalssamecount=0;<br \/>\n                              \/\/top.document.title='ZerO';<br \/>\n                           } <font color=magenta>else {<br \/>\n                              ytsearch(parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).value);<br \/>\n                              numericals='';<br \/>\n                              numericalssamecount=0;<br \/>\n                              \/\/top.document.title='ZeRO';<br \/>\n                           }<\/font><br \/>\n                        }<br \/>\n                      } else {<br \/>\n                        numericalssamecount=1;<br \/>\n                        numericals=parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).value;<br \/>\n                        setTimeout(sanitycheck, 12000);<br \/>\n                      }<br \/>\n                   }<br \/>\n                   <font color=purple>break;<\/font><br \/>\n<br \/>\n                 <font color=purple>default:<\/font><br \/>\n                   if (numericalssamecount &gt; 0) {<br \/>\n                     numericalssamecount++;<br \/>\n                   }<br \/>\n                   <font color=purple>break;<\/font><br \/>\n              <font color=blue>}<\/font><br \/>\n              if (parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder.replace('\/p','').indexOf('\/') != -1) {<br \/>\n              if (startagain && eval(2.2 + Math.round(player.getCurrentTime())) &gt; Math.floor(eval('' + duration)) && eval('' + duration) &gt; 0) {<br \/>\n                thatisit=true;<br \/>\n                lastokn=0;<br \/>\n                \/\/alert(4);<br \/>\n                if (('' + window.sessionStorage.getItem('loop_' + vid.split(',')[0])).replace(\/^undefined\/g,'').replace(\/^null\/g,'').trim() != '') {<br \/>\n                \/\/alert(44);<br \/>\n                   window.sessionStorage.removeItem('loop_' + vid.split(',')[0]);<br \/>\n                }<br \/>\n                window.sessionStorage.setItem('loop_' + vid.split(',')[0], 'y');<br \/>\n                \/\/alert(444);<br \/>\n                secscnt=eval(0.001 + duration);<br \/>\n                if (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n                parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).setAttribute('data-loop','y');<br \/>\n                setTimeout(function(){<br \/>\n                  if (1 == 11) {<br \/>\n                  setTimeout(startVideo, playtime + delay);<br \/>\n                  thatisit=false; setTimeout(playingvideo, 1900);<br \/>\n                  } else {<br \/>\n                  var huhc=false;<br \/>\n                  \/\/ huhc=confirm('Okay to loop?');<br \/>\n                  if (huhc && 1 == 7) {<br \/>\n                  player.seekTo(0.01);<br \/>\n                  secscnt=0.01;<br \/>\n                  oursecscnt=0.01;<br \/>\n                  player.playVideo();<br \/>\n                  thatisit=false; setTimeout(playingvideo, 1900);<br \/>\n                  } else if (9 == 5) {<br \/>\n                  window.parent.focus();<br \/>\n                  parent.location.href=parent.document.URL.split('&random=')[0] + '&random=' + Math.floor(Math.random() * 1987865) + '&startagain=y' + ('' + location.hash).replace(\/^undefined\/g,'').replace(\/^null\/g,'').replace(\/^\\#$\/g,'');<br \/>\n                  window.parent.scrollTo(0,0);<br \/>\n                  } else {<br \/>\n                  player.seekTo(1);<br \/>\n                  thatisit=false; setTimeout(playingvideo, 3000);<br \/>\n                  setTimeout(retry, 5000);<br \/>\n                 \/\/alert(4444);<br \/>\n                 }<br \/>\n                  } }, 1500);<br \/>\n                inplaying=false;<br \/>\n                return '';<br \/>\n                } else {<br \/>\n                parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).setAttribute('data-loop','y');<br \/>\n                setTimeout(function(){  window.top.focus(); parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'').substring(3).split('_')[0]).click();   }, 1500);<br \/>\n                inplaying=false;<br \/>\n                return '';<br \/>\n                }<br \/>\n              }<br \/>\n              if (one == 1 || onepause != 1) {<br \/>\n              if (eval('' + duration) == 0) { duration=player.getDuration();  }<br \/>\n              parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder='' + Math.round(player.getCurrentTime()) + '\/' + duration + ' ... ' + 'P=pause\/play S=stop M=' + mletter + 'ute U=' + uletter + 'nmute L=loop' + psuf;<br \/>\n              } else {<br \/>\n              if (eval('' + duration) == 0) { duration=player.getDuration();  }<br \/>\n              parent.parent.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder='' + Math.round(player.getCurrentTime()) + '\/' + duration + ' ... ' + 'P=play\/pause S=stop M=' + mletter + 'ute U=' + uletter + 'nmute L=loop' + psuf;<br \/>\n              setTimeout(addablank, 3000);<br \/>\n              }<br \/>\n              setTimeout(playingvideo, 1000);<br \/>\n              }<br \/>\n              }<br \/>\n            }<br \/>\n          }<br \/>\n      <font color=magenta>}<\/font><br \/>\n<\/code><\/p>\n<p> &#8230; in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/ytaudioonly.js-----GETME\" rel=\"noopener\">our changed<\/a> external Javascript <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/ytaudioonly.js-----GETME\" rel=\"noopener\">ytaudioonly.js<\/a> external Javascript supports <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html----------------------------------------------GETME\" rel=\"noopener\">the changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html----------------------------------------------GETME\" rel=\"noopener\">karaoke_youtube_api.htm<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm\" rel=\"noopener\">inhouse YouTube video interfacer<\/a> calling <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html------------------------GETME\" rel=\"noopener\">the modified<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html------------------------GETME\" rel=\"noopener\">stop_start_youtube.html<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html\" rel=\"noopener\">YouTube API caller<\/a> in our quest to play YouTube audio &#8220;in place&#8221; in a useful way.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-numericals-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Numericals Tutorial<\/a>.<\/p-->\n<hr>\n<p id='ejytavft'>Previous relevant <a target=\"_blank\" title='External Javascript YouTube Audio of Video Fallback Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-fallback-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Fallback Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_emoji_fallback.jpg\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"External Javascript YouTube Audio of Video Fallback Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_emoji_fallback.jpg\" title=\"External Javascript YouTube Audio of Video Fallback Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">External Javascript YouTube Audio of Video Fallback Tutorial<\/p><\/div>\n<p>Further to yesterday&#8217;s <a title='External Javascript YouTube Audio of Video Looping Tutorial' href='#ejytavlt'>External Javascript YouTube Audio of Video Looping Tutorial<\/a> work regarding the <i>Play Audio Stream of Selected YouTube Video In Place<\/i> functionality we&#8217;re currently working on &#8230;<\/p>\n<ul>\n<li>the timing of getting some mobile platform looping going is fortunate &#8230; and it means, with far less complication, we can organize &#8230;<\/li>\n<li>the &#8220;red button&#8221; (mobile) or &#8220;link&#8221; (non-mobile) can serve as a <i>fallback<\/i> option when the user is in <i>looping mode<\/i> of YouTube Audio Stream Part of Video play and there is an interruption to that playing<\/li>\n<\/ul>\n<p> &#8230; because there are a million and one reasons your YouTube video can get interrupted, such as &#8230;<\/p>\n<ul>\n<li>window focus leaves the window of the playing YouTube video<\/li>\n<li>seems like some mobile time limit is going on too<\/li>\n<li>dormancy to sleep screen<\/li>\n<li>focus regarding the textarea elements, we suspect<\/li>\n<\/ul>\n<p> &#8230; etcetera etcetera etcetera &#8230; and there will could be good reasons the operating system behaves the way it does <font size=1>(as well as, as far as it goes here, we&#8217;ve been known to have &#8220;bad hair days&#8221;, even &#8220;very little hair days&#8221;)<\/font>.<\/p>\n<p>But with a <i>fallback<\/i> option there, to <sup>re-<\/sup>click that originating &#8220;red button&#8221; (mobile) or &#8220;link&#8221; (non-mobile) is the chance to continue on with looping, so far not always back where you were, but <a target=\"_blank\" class=\"audioytplay\" title=\"?\" href='https:\/\/www.youtube.com\/watch?v=4t4PzWSLhqQ' rel=\"noopener\">who<\/a> knows <font size=1>what the future brings<\/font>?!<\/p>\n<p>Also, organization wise, what has made all this easier, <font color=blue>was to<\/font> &#8230;<\/p>\n<p><code><br \/>\n      function playingvideo() {<br \/>\n          psuf='';<br \/>\n          if (startagain) {<br \/>\n             if (1 == 6 && navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n             psuf=' via button reclick ' + String.fromCodePoint(10004);<br \/>\n             } else {<br \/>\n             psuf=' ' + String.fromCodePoint(10004);<br \/>\n             }<br \/>\n          }<br \/>\n          if (('' + location.hash).replace(\/^undefined\/g,'').replace(\/^null\/g,'').replace(\/\\#\/g,'') != '') {<br \/>\n            if (eval('' + duration) == 0 && Math.round(player.getCurrentTime()) &lt; 1) {<br \/>\n                   if (one == 1 || onepause != 1) {<br \/>\n                     if (1 == 4) { player.pauseVideo(); }<br \/>\n                   } else {<br \/>\n                     player.playVideo();<br \/>\n                   }<br \/>\n              setTimeout(playingvideo, 1000);<br \/>\n            } else {<br \/>\n            if (top.document.getElementById(location.hash.replace(\/\\#\/g,''))) {<br \/>\n              if (('' + top.document.getElementById(location.hash.replace(\/\\#\/g,'')).getAttribute('data-val')).replace(\/^undefined\/g,'').replace(\/^null\/g,'') != '') {<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value= top.document.getElementById(location.hash.replace(\/\\#\/g,'')).getAttribute('data-val');<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).setAttribute('data-val','');<br \/>\n              }<br \/>\n              switch (('' + top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value.toUpperCase() + ' ').substring(0,1)) {<br \/>\n                 case 'L':<br \/>\n                   if (numericalssamecount &lt;= 0) {<br \/>\n                   startagain=true;<br \/>\n                   if (('' + window.sessionStorage.getItem('loop_' + vid.split(',')[0])).replace(\/^undefined\/g,'').replace(\/^null\/g,'').trim() == '') {<br \/>\n                   setInterval(retry, 5000);<br \/>\n                   } else {<br \/>\n                   window.sessionStorage.removeItem('loop_' + vid, 'y');<br \/>\n                   }<br \/>\n                   <font color=blue>window.sessionStorage.setItem('loop_' + vid, 'y');<\/font><br \/>\n          psuf='';<br \/>\n          if (startagain) {<br \/>\n             psuf=' ' + String.fromCodePoint(10004);<br \/>\n          }<br \/>\n                   dostumps=false;<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   } else {<br \/>\n                   numericalssamecount++;<br \/>\n                   }<br \/>\n                   break;<br \/>\n<br \/>\n                 case 'S':<br \/>\n                   if (numericalssamecount &lt;= 0) {<br \/>\n                   startagain=false;<br \/>\n          psuf='';<br \/>\n          if (startagain) {<br \/>\n             psuf=' ' + String.fromCodePoint(10004);<br \/>\n          }<br \/>\n                   dostumps=true;<br \/>\n                   player.stopVideo();<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   try {<br \/>\n                     window.sessionStorage.removeItem('loop_' + vid);<br \/>\n                   } catch(hdgf) { }<br \/>\n                   } else {<br \/>\n                   numericalssamecount++;<br \/>\n                   }<br \/>\n                   break;<br \/>\n<br \/>\n                 case 'P':<br \/>\n                   if (numericalssamecount &lt;= 0) {<br \/>\n                   if (one == 1 || onepause != 1) {<br \/>\n                     player.pauseVideo();<br \/>\n                   } else {<br \/>\n                     player.playVideo();<br \/>\n                   }<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   } else {<br \/>\n                   numericalssamecount++;<br \/>\n                   }<br \/>\n                   break;<br \/>\n<br \/>\n                 case 'M':<br \/>\n                   if (numericalssamecount &lt;= 0) {<br \/>\n                   player.mute();<br \/>\n                   mletter='M';<br \/>\n                   uletter='u';<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   } else {<br \/>\n                   numericalssamecount++;<br \/>\n                   }<br \/>\n                   break;<br \/>\n<br \/>\n                 case 'U':<br \/>\n                   if (numericalssamecount &lt;= 0) {<br \/>\n                   player.unMute();<br \/>\n                   mletter='m';<br \/>\n                   uletter='U';<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   } else {<br \/>\n                   numericalssamecount++;<br \/>\n                   }<br \/>\n                   break;<br \/>\n<br \/>\n                 case '0':<br \/>\n                 case '1':<br \/>\n                 case '2':<br \/>\n                 case '3':<br \/>\n                 case '4':<br \/>\n                 case '5':<br \/>\n                 case '6':<br \/>\n                 case '7':<br \/>\n                 case '8':<br \/>\n                 case '9':<br \/>\n                   if (2 == 2 || !navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n                      if (numericals == '') {<br \/>\n                        numericalssamecount=1;<br \/>\n                        numericals=top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value;<br \/>\n                        setTimeout(sanitycheck, 12000);<br \/>\n                      } else if (top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value == numericals) {<br \/>\n                        numericalssamecount++;<br \/>\n                        if (numericalssamecount &gt;= 10) {<br \/>\n                           if (numericals.replace(\/0\/g,'').replace(\/1\/g,'').replace(\/2\/g,'').replace(\/3\/g,'').replace(\/4\/g,'').replace(\/5\/g,'').replace(\/6\/g,'').replace(\/7\/g,'').replace(\/8\/g,'').replace(\/9\/g,'').trim() == '') {<br \/>\n                              if (eval(numericals) &gt;= 0 && eval(numericals) &lt;= eval('' + duration)) {<br \/>\n                                player.seekTo(eval(numericals.trim()));<br \/>\n                              }<br \/>\n                              top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                              numericals='';<br \/>\n                              numericalssamecount=0;<br \/>\n                           }<br \/>\n                        }<br \/>\n                      } else {<br \/>\n                        numericalssamecount=1;<br \/>\n                        numericals=top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value;<br \/>\n                        setTimeout(sanitycheck, 12000);<br \/>\n                      }<br \/>\n                   }<br \/>\n                   break;<br \/>\n<br \/>\n                 default:<br \/>\n                   if (numericalssamecount &gt; 0) {<br \/>\n                     numericalssamecount++;<br \/>\n                   }<br \/>\n                   break;<br \/>\n              }<br \/>\n              if (top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder.indexOf('\/') != -1) {<br \/>\n              if (startagain && eval(2 + Math.round(player.getCurrentTime())) &gt; eval('' + duration) && eval('' + duration) &gt; 0) {<br \/>\n                secscnt=eval(0.001 + duration);<br \/>\n                if (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n                top.document.getElementById(location.hash.replace(\/\\#\/g,'')).setAttribute('data-loop','y');<br \/>\n                setTimeout(function(){<br \/>\n                  if (1 == 11) {<br \/>\n                  setTimeout(startVideo, playtime + delay);<br \/>\n                  setTimeout(playingvideo, 1900);<br \/>\n                  } else {<br \/>\n                  var huhc=false;<br \/>\n                  \/\/ huhc=confirm('Okay to loop?');<br \/>\n                  if (huhc && 1 == 7) {<br \/>\n                  player.seekTo(0.01);<br \/>\n                  secscnt=0.01;<br \/>\n                  oursecscnt=0.01;<br \/>\n                  player.playVideo();<br \/>\n                  setTimeout(playingvideo, 1900);<br \/>\n                  } else if (9 == 5) {<br \/>\n                  window.parent.focus();<br \/>\n                  parent.location.href=parent.document.URL.split('&random=')[0] + '&random=' + Math.floor(Math.random() * 1987865) + '&startagain=y' + ('' + location.hash).replace(\/^undefined\/g,'').replace(\/^null\/g,'').replace(\/^\\#$\/g,'');<br \/>\n                  window.parent.scrollTo(0,0);<br \/>\n                  } else {<br \/>\n                  player.seekTo(1);<br \/>\n                  setTimeout(playingvideo, 3000);<br \/>\n                  setTimeout(retry, 5000);<br \/>\n                  }<br \/>\n                  } }, 1500);<br \/>\n                return '';<br \/>\n                } else {<br \/>\n                top.document.getElementById(location.hash.replace(\/\\#\/g,'')).setAttribute('data-loop','y');<br \/>\n                setTimeout(function(){  window.top.focus(); top.document.getElementById(location.hash.replace(\/\\#\/g,'').substring(3).split('_')[0]).click();   }, 1500);<br \/>\n                return '';<br \/>\n                }<br \/>\n              }<br \/>\n              if (one == 1 || onepause != 1) {<br \/>\n              if (eval('' + duration) == 0) { duration=player.getDuration();  }<br \/>\n              top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder='' + Math.round(player.getCurrentTime()) + '\/' + duration + ' ... ' + 'P=pause\/play S=stop M=' + mletter + 'ute U=' + uletter + 'nmute L=loop' + psuf;<br \/>\n              } else {<br \/>\n              if (eval('' + duration) == 0) { duration=player.getDuration();  }<br \/>\n              top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder='' + Math.round(player.getCurrentTime()) + '\/' + duration + ' ... ' + 'P=play\/pause S=stop M=' + mletter + 'ute U=' + uletter + 'nmute L=loop' + psuf;<br \/>\n              setTimeout(addablank, 3000);<br \/>\n              }<br \/>\n              setTimeout(playingvideo, 1000);<br \/>\n              }<br \/>\n              }<br \/>\n            }<br \/>\n          }<br \/>\n      }<br \/>\n<\/code><\/p>\n<p> &#8230; start using the web browser&#8217;s session storage smarts as an overseeing data source we can better rely on.  With this in place it was so much more robust to work out when to invoke our <i>fallback<\/i> thinking new Javascript function &#8230;<\/p>\n<p><code><br \/>\n      function retry() {<br \/>\n            if (top.document.getElementById(location.hash.replace(\/\\#\/g,''))) {<br \/>\n              if (('' + top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder).indexOf('0\/0 ...') == 0) {<br \/>\n                  if (top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder.indexOf(' to continue looping') == -1) {<br \/>\n             if (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n                  top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder+=' try click of red button to continue looping';<br \/>\n             } else {<br \/>\n                  top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder+=' try click of link to continue looping';<br \/>\n             }<br \/>\n                  window.parent.focus();<br \/>\n                  parent.location.href=parent.document.URL.split('&random=')[0] + '&random=' + Math.floor(Math.random() * 1987865) + '&startagain=y' + ('' + location.hash).replace(\/^undefined\/g,'').replace(\/^null\/g,'').replace(\/^\\#$\/g,'');<br \/>\n                  window.parent.scrollTo(0,0);<br \/>\n                  }<br \/>\n              } else if (('' + top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder).indexOf('P=pause\/play') != -1) {<br \/>\n                  if (prevretry == '') {<br \/>\n                     prevretry=top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder;<br \/>\n                  } else if (prevretry == top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder) {<br \/>\n                     if (top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder.indexOf(' to continue looping') == -1) {<br \/>\n             if (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n                     top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder+=' ... try click of red button to continue looping';<br \/>\n             } else {<br \/>\n                     top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder+=' ... try click of link to continue looping';<br \/>\n             }<br \/>\n                     }<br \/>\n                  } else {<br \/>\n                     prevretry=top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder;<br \/>\n                  }<br \/>\n              } else if (('' + top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder).indexOf('P=play\/pause') != -1) {<br \/>\n                  if (prevretry == '') {<br \/>\n                     prevretry=top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder;<br \/>\n                  } else if (prevretry == top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder) {<br \/>\n                     if (top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder.indexOf(' to continue looping') == -1) {<br \/>\n             if (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n                     top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder+=' ... try click of red button to continue looping';<br \/>\n             } else {<br \/>\n                     top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder+=' ... try click of link to continue looping';<br \/>\n             }<br \/>\n                     }<br \/>\n                  } else {<br \/>\n                     prevretry=top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder;<br \/>\n                  }<br \/>\n              }<br \/>\n            }<br \/>\n      }<br \/>\n<\/code><\/p>\n<p> &#8230; for <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/ytaudioonly.js----GETME\" rel=\"noopener\">our so far in the day unchanged<\/a> external Javascript <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/ytaudioonly.js----GETME\" rel=\"noopener\">ytaudioonly.js<\/a> external Javascript supports <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html---------------------------------------------GETME\" rel=\"noopener\">the changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html---------------------------------------------GETME\" rel=\"noopener\">karaoke_youtube_api.htm<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm\" rel=\"noopener\">inhouse YouTube video interfacer<\/a> calling <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html-----------------------GETME\" rel=\"noopener\">the modified<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html-----------------------GETME\" rel=\"noopener\">stop_start_youtube.html<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html\" rel=\"noopener\">YouTube API caller<\/a> in our quest to play YouTube audio &#8220;in place&#8221; in a useful way.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-looping-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Looping Tutorial<\/a>.<\/p-->\n<hr>\n<p id='ejytavlt'>Previous relevant <a target=\"_blank\" title='External Javascript YouTube Audio of Video Looping Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-looping-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Looping Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_emoji_looping.jpg\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"External Javascript YouTube Audio of Video Looping Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_emoji_looping.jpg\" title=\"External Javascript YouTube Audio of Video Looping Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">External Javascript YouTube Audio of Video Looping Tutorial<\/p><\/div>\n<p>Of yesterday&#8217;s <a title='External Javascript YouTube Audio of Video Emoji Tutorial' href='#ejytavet'>External Javascript YouTube Audio of Video Emoji Tutorial<\/a> &#8230;<\/p>\n<ol>\n<li>pause<\/li>\n<li>play<\/li>\n<li>loop<\/li>\n<li>stop<\/li>\n<li>progress <font size=1>&#8230; <strike>perhaps<\/strike>yes<\/font><\/li>\n<\/ol>\n<p> &#8230; list of suggested &#8220;controls&#8221; for our <i>Play Audio Stream of Selected YouTube Video In Place<\/i> functionality, am sure of most interest was the <i>loop<\/i> one.  Well, it certainly was for us, anyway.<\/p>\n<p>We weren&#8217;t sure whether we could get around the <i>actual tap needed<\/i> on mobile platforms to just apply &#8230;<\/p>\n<p><code><br \/>\n  player.seekTo(0);<br \/>\n  player.playVideo();<br \/>\n<\/code><\/p>\n<p> &#8230; as we near the end of the video.  Alas, no, we need the red button (ie. the transparent YouTube video) to be retapped to get anywhere &#8230; so sad.<\/p>\n<p>But non-mobile <font size=1>platform usages<\/font> can loop effectively, and might help out users, who, like me, occasionally get obsessed with a YouTube music video (such as <a target=\"_blank\" title=\"?\" class=\"audioytplay\" href='https:\/\/www.youtube.com\/watch?v=FtE3hoR_Nvo' rel=\"noopener\">Morricone &#8211; Gabriel&#8217;s Oboe from The Mission, Maja \u0141agowska &#8211; oboe, conducted by Andrzej Kucyba\u0142a<\/a>) &#8230; hence the radio and musical note emojis &#128251;&#127926; (&amp;#128251;&amp;#127926;) we started using yesterday.<\/p>\n<p>Another plan we had to ask for menu operations via a window.prompt a lot of users will be relieved to hear, didn&#8217;t work either, and so we had to redesign, finally settling on HTML <i>textarea<\/i> elements whereby &#8230;<\/p>\n<ul>\n<li>information and instructions are placed in its <i>placeholder<\/i> attribute &#8230; and &#8230;<\/li>\n<li>like a hotkey <font size=1>(but not needing <i>onkeydown<\/i> or <i>onkeyup<\/i> or <i>onkeypress<\/i> event logic intervention)<\/font> user audio <i>control<\/i> instructions <font color=blue>are unique regarding first character<\/font>, so way down at the grandchild level we have &#8230;<br \/>\n<code><br \/>\n      function playingvideo() {<br \/>\n          psuf='';<br \/>\n          if (startagain) {<br \/>\n             if (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n             psuf=' via button reclick ' + String.fromCodePoint(10004);<br \/>\n             } else {<br \/>\n             psuf=' ' + String.fromCodePoint(10004);<br \/>\n             }<br \/>\n          }<br \/>\n          if (('' + location.hash).replace(\/^undefined\/g,'').replace(\/^null\/g,'').replace(\/\\#\/g,'') != '') {<br \/>\n            if (eval('' + duration) == 0 && Math.round(player.getCurrentTime()) &lt; 1) {<br \/>\n                   if (one == 1 || onepause != 1) {<br \/>\n                     if (1 == 4) { player.pauseVideo(); }<br \/>\n                   } else {<br \/>\n                     player.playVideo();<br \/>\n                   }<br \/>\n              setTimeout(playingvideo, 1000);<br \/>\n            } else {<br \/>\n            if (top.document.getElementById(location.hash.replace(\/\\#\/g,''))) {<br \/>\n              if (('' + top.document.getElementById(location.hash.replace(\/\\#\/g,'')).getAttribute('data-val')).replace(\/^undefined\/g,'').replace(\/^null\/g,'') != '') {<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value= top.document.getElementById(location.hash.replace(\/\\#\/g,'')).getAttribute('data-val');<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).setAttribute('data-val','');<br \/>\n              }<br \/>\n              <font color=blue>switch (('' + top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value.toUpperCase() + ' ').substring(0,1)) {<br \/>\n                 case 'L':<br \/>\n                   startagain=true;<br \/>\n          psuf='';<br \/>\n          if (startagain) {<br \/>\n             psuf=' ' + String.fromCodePoint(10004);<br \/>\n          }<br \/>\n                   dostumps=false;<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   break;<br \/>\n<br \/>\n                 case 'S':<br \/>\n                   startagain=false;<br \/>\n          psuf='';<br \/>\n          if (startagain) {<br \/>\n             psuf=' ' + String.fromCodePoint(10004);<br \/>\n          }<br \/>\n                   dostumps=true;<br \/>\n                   player.stopVideo();<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   break;<br \/>\n<br \/>\n                 case 'P':<br \/>\n                   if (one == 1 || onepause != 1) {<br \/>\n                     player.pauseVideo();<br \/>\n                   } else {<br \/>\n                     player.playVideo();<br \/>\n                   }<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   break;<br \/>\n<br \/>\n                 case 'M':<br \/>\n                   player.mute();<br \/>\n                   mletter='M';<br \/>\n                   uletter='u';<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   break;<br \/>\n<br \/>\n                 case 'U':<br \/>\n                   player.unMute();<br \/>\n                   mletter='m';<br \/>\n                   uletter='U';<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   break;<br \/>\n    <br \/> <br \/>\n                 default:<br \/>\n                   break;<br \/>\n              }<\/font><br \/>\n              if (top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder.indexOf('\/') != -1) {<br \/>\n              if (startagain && eval(2 + Math.round(player.getCurrentTime())) &gt; eval('' + duration) && eval('' + duration) &gt; 0) {<br \/>\n                secscnt=eval(0.001 + duration);<br \/>\n                if (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n                top.document.getElementById(location.hash.replace(\/\\#\/g,'')).setAttribute('data-loop','y');<br \/>\n                setTimeout(function(){<br \/>\n                  if (1 == 11) {<br \/>\n                  setTimeout(startVideo, playtime + delay);<br \/>\n                  setTimeout(playingvideo, 1900);<br \/>\n                  } else {<br \/>\n                  var huhc=false;<br \/>\n                  \/\/ huhc=confirm('Okay to loop?');<br \/>\n                  if (huhc && 1 == 7) {<br \/>\n                  player.seekTo(0.01);<br \/>\n                  secscnt=0.01;<br \/>\n                  oursecscnt=0.01;<br \/>\n                  player.playVideo();<br \/>\n                  setTimeout(playingvideo, 1900);<br \/>\n                  } else {<br \/>\n                  window.parent.focus();<br \/>\n                  parent.location.href=parent.document.URL.split('&random=')[0] + '&random=' + Math.floor(Math.random() * 1987865) + '&startagain=y' + ('' + location.hash).replace(\/^undefined\/g,'').replace(\/^null\/g,'').replace(\/^\\#$\/g,'');<br \/>\n                  }<br \/>\n                  } }, 1500);<br \/>\n                return '';<br \/>\n                } else {<br \/>\n                top.document.getElementById(location.hash.replace(\/\\#\/g,'')).setAttribute('data-loop','y');<br \/>\n                setTimeout(function(){  window.top.focus(); top.document.getElementById(location.hash.replace(\/\\#\/g,'').substring(3).split('_')[0]).click();   }, 1500);<br \/>\n                return '';<br \/>\n                }<br \/>\n              }<br \/>\n              if (one == 1 || onepause != 1) {<br \/>\n              if (eval('' + duration) == 0) { duration=player.getDuration();  }<br \/>\n              top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder='' + Math.round(player.getCurrentTime()) + '\/' + duration + ' ... ' + 'P=pause\/play S=stop M=' + mletter + 'ute U=' + uletter + 'nmute L=loop' + psuf;<br \/>\n              } else {<br \/>\n              if (eval('' + duration) == 0) { duration=player.getDuration();  }<br \/>\n              top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder='' + Math.round(player.getCurrentTime()) + '\/' + duration + ' ... ' + 'P=play\/pause S=stop M=' + mletter + 'ute U=' + uletter + 'nmute L=loop' + psuf;<br \/>\n              }<br \/>\n              setTimeout(playingvideo, 1000);<br \/>\n              }<br \/>\n              }<br \/>\n            }<br \/>\n          }<br \/>\n      }<br \/>\n<\/code><br \/>\n &#8230; does a good job acting like those keyboard events\n<\/li>\n<\/ul>\n<p> &#8230; for <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/ytaudioonly.js---GETME\" rel=\"noopener\">today&#8217;s fourth draft<\/a> external Javascript <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/ytaudioonly.js---GETME\" rel=\"noopener\">ytaudioonly.js<\/a> external Javascript supports <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html--------------------------------------------GETME\" rel=\"noopener\">the changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html--------------------------------------------GETME\" rel=\"noopener\">karaoke_youtube_api.htm<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm\" rel=\"noopener\">inhouse YouTube video interfacer<\/a> calling <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html----------------------GETME\" rel=\"noopener\">the modified<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html----------------------GETME\" rel=\"noopener\">stop_start_youtube.html<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html\" rel=\"noopener\">YouTube API caller<\/a> in our quest to play YouTube audio &#8220;in place&#8221; in a useful way.<\/p>\n<p><b><i>Stop Press<\/i><\/b><\/p>\n<p><strike>Un<\/strike>Less attended mobile looping can work with the kludge (we suspect our bug or code design flaw) &#8230;<\/p>\n<p><code><br \/>\n  player.seekTo(1);<br \/>\n  player.playVideo();<br \/>\n<\/code><\/p>\n<p> &#8230; and we hope nobody&#8217;s playing &#8220;Name That Sound&#8221; with the replays.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-looping-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Looping Tutorial<\/a>.<\/p-->\n<hr>\n<p id='ejytavlt'>Previous relevant <a target=\"_blank\" title='External Javascript YouTube Audio of Video Looping Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-looping-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Looping Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_emoji_looping.jpg\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"External Javascript YouTube Audio of Video Looping Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_emoji_looping.jpg\" title=\"External Javascript YouTube Audio of Video Looping Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">External Javascript YouTube Audio of Video Looping Tutorial<\/p><\/div>\n<p>Of yesterday&#8217;s <a title='External Javascript YouTube Audio of Video Emoji Tutorial' href='#ejytavet'>External Javascript YouTube Audio of Video Emoji Tutorial<\/a> &#8230;<\/p>\n<ol>\n<li>pause<\/li>\n<li>play<\/li>\n<li>loop<\/li>\n<li>stop<\/li>\n<li>progress <font size=1>&#8230; <strike>perhaps<\/strike>yes<\/font><\/li>\n<\/ol>\n<p> &#8230; list of suggested &#8220;controls&#8221; for our <i>Play Audio Stream of Selected YouTube Video In Place<\/i> functionality, am sure of most interest was the <i>loop<\/i> one.  Well, it certainly was for us, anyway.<\/p>\n<p>We weren&#8217;t sure whether we could get around the <i>actual tap needed<\/i> on mobile platforms to just apply &#8230;<\/p>\n<p><code><br \/>\n  player.seekTo(0);<br \/>\n  player.playVideo();<br \/>\n<\/code><\/p>\n<p> &#8230; as we near the end of the video.  Alas, no, we need the red button (ie. the transparent YouTube video) to be retapped to get anywhere &#8230; so sad.<\/p>\n<p>But non-mobile <font size=1>platform usages<\/font> can loop effectively, and might help out users, who, like me, occasionally get obsessed with a YouTube music video (such as <a target=\"_blank\" title=\"?\" class=\"audioytplay\" href='https:\/\/www.youtube.com\/watch?v=FtE3hoR_Nvo' rel=\"noopener\">Morricone &#8211; Gabriel&#8217;s Oboe from The Mission, Maja \u0141agowska &#8211; oboe, conducted by Andrzej Kucyba\u0142a<\/a>) &#8230; hence the radio and musical note emojis &#128251;&#127926; (&amp;#128251;&amp;#127926;) we started using yesterday.<\/p>\n<p>Another plan we had to ask for menu operations via a window.prompt a lot of users will be relieved to hear, didn&#8217;t work either, and so we had to redesign, finally settling on HTML <i>textarea<\/i> elements whereby &#8230;<\/p>\n<ul>\n<li>information and instructions are placed in its <i>placeholder<\/i> attribute &#8230; and &#8230;<\/li>\n<li>like a hotkey <font size=1>(but not needing <i>onkeydown<\/i> or <i>onkeyup<\/i> or <i>onkeypress<\/i> event logic intervention)<\/font> user audio <i>control<\/i> instructions <font color=blue>are unique regarding first character<\/font>, so way down at the grandchild level we have &#8230;<br \/>\n<code><br \/>\n      function playingvideo() {<br \/>\n          psuf='';<br \/>\n          if (startagain) {<br \/>\n             if (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n             psuf=' via button reclick ' + String.fromCodePoint(10004);<br \/>\n             } else {<br \/>\n             psuf=' ' + String.fromCodePoint(10004);<br \/>\n             }<br \/>\n          }<br \/>\n          if (('' + location.hash).replace(\/^undefined\/g,'').replace(\/^null\/g,'').replace(\/\\#\/g,'') != '') {<br \/>\n            if (eval('' + duration) == 0 && Math.round(player.getCurrentTime()) &lt; 1) {<br \/>\n                   if (one == 1 || onepause != 1) {<br \/>\n                     if (1 == 4) { player.pauseVideo(); }<br \/>\n                   } else {<br \/>\n                     player.playVideo();<br \/>\n                   }<br \/>\n              setTimeout(playingvideo, 1000);<br \/>\n            } else {<br \/>\n            if (top.document.getElementById(location.hash.replace(\/\\#\/g,''))) {<br \/>\n              if (('' + top.document.getElementById(location.hash.replace(\/\\#\/g,'')).getAttribute('data-val')).replace(\/^undefined\/g,'').replace(\/^null\/g,'') != '') {<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value= top.document.getElementById(location.hash.replace(\/\\#\/g,'')).getAttribute('data-val');<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).setAttribute('data-val','');<br \/>\n              }<br \/>\n              <font color=blue>switch (('' + top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value.toUpperCase() + ' ').substring(0,1)) {<br \/>\n                 case 'L':<br \/>\n                   startagain=true;<br \/>\n          psuf='';<br \/>\n          if (startagain) {<br \/>\n             psuf=' ' + String.fromCodePoint(10004);<br \/>\n          }<br \/>\n                   dostumps=false;<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   break;<br \/>\n<br \/>\n                 case 'S':<br \/>\n                   startagain=false;<br \/>\n          psuf='';<br \/>\n          if (startagain) {<br \/>\n             psuf=' ' + String.fromCodePoint(10004);<br \/>\n          }<br \/>\n                   dostumps=true;<br \/>\n                   player.stopVideo();<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   break;<br \/>\n<br \/>\n                 case 'P':<br \/>\n                   if (one == 1 || onepause != 1) {<br \/>\n                     player.pauseVideo();<br \/>\n                   } else {<br \/>\n                     player.playVideo();<br \/>\n                   }<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   break;<br \/>\n<br \/>\n                 case 'M':<br \/>\n                   player.mute();<br \/>\n                   mletter='M';<br \/>\n                   uletter='u';<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   break;<br \/>\n<br \/>\n                 case 'U':<br \/>\n                   player.unMute();<br \/>\n                   mletter='m';<br \/>\n                   uletter='U';<br \/>\n                   top.document.getElementById(location.hash.replace(\/\\#\/g,'')).value='';<br \/>\n                   break;<br \/>\n    <br \/> <br \/>\n                 default:<br \/>\n                   break;<br \/>\n              }<\/font><br \/>\n              if (top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder.indexOf('\/') != -1) {<br \/>\n              if (startagain && eval(2 + Math.round(player.getCurrentTime())) &gt; eval('' + duration) && eval('' + duration) &gt; 0) {<br \/>\n                secscnt=eval(0.001 + duration);<br \/>\n                if (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n                top.document.getElementById(location.hash.replace(\/\\#\/g,'')).setAttribute('data-loop','y');<br \/>\n                setTimeout(function(){<br \/>\n                  if (1 == 11) {<br \/>\n                  setTimeout(startVideo, playtime + delay);<br \/>\n                  setTimeout(playingvideo, 1900);<br \/>\n                  } else {<br \/>\n                  var huhc=false;<br \/>\n                  \/\/ huhc=confirm('Okay to loop?');<br \/>\n                  if (huhc && 1 == 7) {<br \/>\n                  player.seekTo(0.01);<br \/>\n                  secscnt=0.01;<br \/>\n                  oursecscnt=0.01;<br \/>\n                  player.playVideo();<br \/>\n                  setTimeout(playingvideo, 1900);<br \/>\n                  } else {<br \/>\n                  window.parent.focus();<br \/>\n                  parent.location.href=parent.document.URL.split('&random=')[0] + '&random=' + Math.floor(Math.random() * 1987865) + '&startagain=y' + ('' + location.hash).replace(\/^undefined\/g,'').replace(\/^null\/g,'').replace(\/^\\#$\/g,'');<br \/>\n                  }<br \/>\n                  } }, 1500);<br \/>\n                return '';<br \/>\n                } else {<br \/>\n                top.document.getElementById(location.hash.replace(\/\\#\/g,'')).setAttribute('data-loop','y');<br \/>\n                setTimeout(function(){  window.top.focus(); top.document.getElementById(location.hash.replace(\/\\#\/g,'').substring(3).split('_')[0]).click();   }, 1500);<br \/>\n                return '';<br \/>\n                }<br \/>\n              }<br \/>\n              if (one == 1 || onepause != 1) {<br \/>\n              if (eval('' + duration) == 0) { duration=player.getDuration();  }<br \/>\n              top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder='' + Math.round(player.getCurrentTime()) + '\/' + duration + ' ... ' + 'P=pause\/play S=stop M=' + mletter + 'ute U=' + uletter + 'nmute L=loop' + psuf;<br \/>\n              } else {<br \/>\n              if (eval('' + duration) == 0) { duration=player.getDuration();  }<br \/>\n              top.document.getElementById(location.hash.replace(\/\\#\/g,'')).placeholder='' + Math.round(player.getCurrentTime()) + '\/' + duration + ' ... ' + 'P=play\/pause S=stop M=' + mletter + 'ute U=' + uletter + 'nmute L=loop' + psuf;<br \/>\n              }<br \/>\n              setTimeout(playingvideo, 1000);<br \/>\n              }<br \/>\n              }<br \/>\n            }<br \/>\n          }<br \/>\n      }<br \/>\n<\/code><br \/>\n &#8230; does a good job acting like those keyboard events\n<\/li>\n<\/ul>\n<p> &#8230; for <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/ytaudioonly.js---GETME\" rel=\"noopener\">today&#8217;s fourth draft<\/a> external Javascript <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/ytaudioonly.js---GETME\" rel=\"noopener\">ytaudioonly.js<\/a> external Javascript supports <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html--------------------------------------------GETME\" rel=\"noopener\">the changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html--------------------------------------------GETME\" rel=\"noopener\">karaoke_youtube_api.htm<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm\" rel=\"noopener\">inhouse YouTube video interfacer<\/a> calling <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html----------------------GETME\" rel=\"noopener\">the modified<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html----------------------GETME\" rel=\"noopener\">stop_start_youtube.html<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html\" rel=\"noopener\">YouTube API caller<\/a> in our quest to play YouTube audio &#8220;in place&#8221; in a useful way.<\/p>\n<p><b><i>Stop Press<\/i><\/b><\/p>\n<p><strike>Un<\/strike>Less attended mobile looping can work with the kludge (we suspect our bug or code design flaw) &#8230;<\/p>\n<p><code><br \/>\n  player.seekTo(1);<br \/>\n  player.playVideo();<br \/>\n<\/code><\/p>\n<p> &#8230; and we hope nobody&#8217;s playing &#8220;Name That Sound&#8221; with the replays.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-looping-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Looping Tutorial<\/a>.<\/p-->\n<hr>\n<p id='ejytavet'>Previous relevant <a target=\"_blank\" title='External Javascript YouTube Audio of Video Emoji Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-emoji-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Emoji Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_emoji_usage.jpg\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"External Javascript YouTube Audio of Video Emoji Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_emoji_usage.jpg\" title=\"External Javascript YouTube Audio of Video Emoji Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">External Javascript YouTube Audio of Video Emoji Tutorial<\/p><\/div>\n<p>Onto yesterday&#8217;s <a title='External Javascript YouTube Audio of Video Mobile Helper Tutorial' href='#ejytavmht'>External Javascript YouTube Audio of Video Mobile Helper Tutorial<\/a>, today, we&#8217;ve &#8230;<\/p>\n<ul>\n<li>further shored up the mobile platform playing of the audio stream of a YouTube video, as requested &#8230;<\/li>\n<li>added display <font size=1>(usefulness only, so far)<\/font> emojis &#128251;&#127926; (&amp;#128251;&amp;#127926;) into the &#8220;underlay&#8221; button displays, as today&#8217;s work, leading up to, tomorrow &#8230;<\/li>\n<li>the emoji tap\/clicks will lead the user to a menu of further options (as often displayed with video controls) &#8230;\n<ol>\n<li>pause<\/li>\n<li>play<\/li>\n<li>loop<\/li>\n<li>stop<\/li>\n<li>progress <font size=1>&#8230; perhaps<\/font><\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<p> &#8230; where <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/ytaudioonly.js--GETME\" rel=\"noopener\">today&#8217;s third draft<\/a> external Javascript <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/ytaudioonly.js--GETME\" rel=\"noopener\">ytaudioonly.js<\/a> external Javascript supports <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html--------------------------------------------GETME\" rel=\"noopener\">the changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html--------------------------------------------GETME\" rel=\"noopener\">karaoke_youtube_api.htm<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm\" rel=\"noopener\">inhouse YouTube video interfacer<\/a> in our quest to play YouTube audio &#8220;in place&#8221; in a useful way.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-emoji-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Emoji Tutorial<\/a>.<\/p-->\n<hr>\n<p id='ejytavmht'>Previous relevant <a target=\"_blank\" title='External Javascript YouTube Audio of Video Mobile Helper Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-mobile-helper-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Mobile Helper Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_mobile_usage.gif\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"External Javascript YouTube Audio of Video Mobile Helper Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_mobile_usage.gif\" title=\"External Javascript YouTube Audio of Video Mobile Helper Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">External Javascript YouTube Audio of Video Mobile Helper Tutorial<\/p><\/div>\n<p>After the start yesterday&#8217;s <a title='External Javascript YouTube Audio of Video Helper Tutorial' href='#ejytavht'>External Javascript YouTube Audio of Video Helper Tutorial<\/a> gave us with our External Javascript YouTube Audio of Video Helper we&#8217;ve progressed making the mobile platform interfacing less flaky, but more testing is needed.<\/p>\n<p>Introducing a general delay into <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html-------------------------------------------GETME\" rel=\"noopener\">our changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html-------------------------------------------GETME\" rel=\"noopener\">karaoke_youtube_api.htm<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm\" rel=\"noopener\">inhouse YouTube video interfacer<\/a> part of the solution turned things around here.<\/p>\n<p>To delay, say by 13.5 seconds, even great swathes of code &#8230;<\/p>\n<p><code><br \/>\n    <a target=\"_blank\" title='Javascript setTimeout method information from w3schools' href='http:\/\/www.w3schools.com\/jsref\/met_win_settimeout.asp' rel=\"noopener\"><i>setTimeout<\/i><\/a>(function(){<br \/>\n      \/\/ Start of \"great swathes of code\"<br \/>\n      \/\/ ...<br \/>\n      \/\/ End of \"great swathes of code\"<br \/>\n   }, 13500);<br \/>\n<\/code><\/p>\n<p> &#8230; is one of those ideas we&#8217;re still pinching ourselves about how effective it can be <font size=1>(let alone passing in arguments at the <i>function()<\/i> bit)<\/font>.  We&#8217;re forever filling &#8220;great swathes of code&#8221; with global Javascript var<font size=1>iables<\/font> but today&#8217;s &#8220;great swathe&#8221; works okay with non global Javascript var<font size=1>iables<\/font> in there, and we&#8217;re thinking we have to be more trusting of the brilliant <i>setTimeout<\/i> (and <i>setInterval<\/i>) Javascript techniques of introducing a delay into the flow of your Javascript.  Of course, we could also delay the work until the document.body <i>onload<\/i> event, but we wanted to get in early with what the code is trying to achieve here &#8230; we&#8217;ll see.<\/p>\n<p>Perhaps a good adage here is &#8230;<\/p>\n<blockquote><p>\nTrust the process.<br \/>\nTrust the wonders of (in the case of iOS, Safari) Web Browser Web Inspector debugging to test ideas you start out being unsure of.\n<\/p><\/blockquote>\n<p> &#8230; with our ongoing <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/ytaudioonly.js-GETME\" rel=\"noopener\">second draft<\/a> external Javascript <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/ytaudioonly.js-GETME\" rel=\"noopener\">ytaudioonly.js<\/a> external Javascript ongoing current project &#8230; so <span><a target=\"_blank\" title=\"?\" class=\"audioytplay\" href='https:\/\/www.youtube.com\/watch?v=IcrbM1l_BoI' rel=\"noopener\">Wake Me Up<\/a><\/span> <span><a target=\"_blank\" class=\"audioytplay\" title=\"?\" href='https:\/\/www.youtube.com\/watch?v=pIgZ7gMze7A' rel=\"noopener\">Before You Go-Go<\/a><\/span>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-mobile-helper-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Mobile Helper Tutorial<\/a>.<\/p-->\n<hr>\n<p id='ejytavht'>Previous relevant <a target=\"_blank\" title='External Javascript YouTube Audio of Video Helper Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-helper-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Helper Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_usage.gif\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"External Javascript YouTube Audio of Video Helper Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/ytaudioonly_usage.gif\" title=\"External Javascript YouTube Audio of Video Helper Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">External Javascript YouTube Audio of Video Helper Tutorial<\/p><\/div>\n<p>It is not that surprising that the next step onto the progress of yesterday&#8217;s <a title='Making of Clickaround Maps Google Chart Geo Chart Mobile Integration Tutorial' href='#mcmgcgcmit'>Making of Clickaround Maps Google Chart Geo Chart Mobile Integration Tutorial<\/a> would involve us developing&#8230;<\/p>\n<ul>\n<li>an external Javascript &#8230;<\/li>\n<li>helper for &#8220;in place&#8221; &#8230;<\/li>\n<li>audio play &#8230;<\/li>\n<li>of that stream of a <a target=\"_blank\" href='https:\/\/youtube.com' rel=\"noopener\">YouTube<\/a> video &#8230; via &#8230;<\/li>\n<li>user linked script call &#8230;<br \/>\n<code><br \/>\n&lt;script type='text\/javascript' src='\/\/www.rjmprogramming.com.au\/ytaudioonly.js'&gt;&lt;\/script&gt;<br \/>\n<\/code><br \/>\n &#8230; helping out &#8230;<\/li>\n<li>HTML &#8220;a&#8221; link <font color=blue>with<\/font> class=audioytplay and a mention of https:\/\/www.youtube.com\/watch?v=[YouTubeID] &#8230; eg.<br \/>\n<code><br \/>\n&lt;p&gt;Oops, <font color=blue>&lt;a class=\"audioytplay\" target=\"_blank\" title=\"?\" href='https:\/\/www.youtube.com\/watch?v=gBzJGckMYO4' rel=\"noopener\"&gt;&lt;strike&gt;that's all&lt;\/strike&gt;sorry, folks&lt;\/a&gt;<\/font>&lt;\/p&gt;<br \/>\n<\/code>\n<\/li>\n<li>to be, via <i>onclick<\/i> event, playing &#8220;in place&#8221; the audio part of that YouTube referenced [YouTubeID] video<\/li>\n<\/ul>\n<p>Developing this is definitely more than a one day job (especially getting mobile platforms working), but today&#8217;s &#8220;first draft&#8221; <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/ytaudioonly.js_GETME\" rel=\"noopener\">ytaudioonly.js<\/a> external Javascript, along with the help of &#8230;<\/p>\n<ul>\n<li><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html------------------------------------------GETME\" rel=\"noopener\">tweaked<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html------------------------------------------GETME\" rel=\"noopener\">karaoke_youtube_api.htm<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm\" rel=\"noopener\">inhouse YouTube video interfacer<\/a><\/li>\n<li><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html---------------------GETME\" rel=\"noopener\">tweaked<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html---------------------GETME\" rel=\"noopener\">stop_start_youtube.html<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html\" rel=\"noopener\">YouTube API caller<\/a><\/li>\n<\/ul>\n<p> &#8230; is our start to this project.  Try it yourself below &#8230;<\/p>\n<p><code><\/p>\n<p>Oops, <font color=blue><a class=\"audioytplay\" target=\"_blank\" title=\"?\" href='https:\/\/www.youtube.com\/watch?v=gBzJGckMYO4' rel=\"noopener\"><strike>that's all<\/strike>sorry, folks<\/a><\/font><\/p>\n<p><\/code><\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/external-javascript-youtube-audio-of-video-helper-tutorial\/' rel=\"noopener\">External Javascript YouTube Audio of Video Helper Tutorial<\/a>.<\/p-->\n<hr>\n<p id='mcmgcgcmit'>Previous relevant <a target=\"_blank\" title='Making of Clickaround Maps Google Chart Geo Chart Mobile Integration Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/making-of-clickaround-maps-google-chart-geo-chart-mobile-integration-tutorial\/' rel=\"noopener\">Making of Clickaround Maps Google Chart Geo Chart Mobile Integration Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/clickarounds_making_of.mp4\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Making of Clickaround Maps Google Chart Geo Chart Mobile Integration Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/clickarounds_making_of.png\" title=\"Making of Clickaround Maps Google Chart Geo Chart Mobile Integration Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">Making of Clickaround Maps Google Chart Geo Chart Mobile Integration Tutorial<\/p><\/div>\n<p>As far as CSS styling goes with our web application work, personally speaking, it is one of &#8230;<\/p>\n<blockquote title=\"As my Under 7's football coach used to say.\"><p>\nGive it a bit of oompha!\n<\/p><\/blockquote>\n<p> &#8230; moments in coding we think we learn more from, than reading about CSS.  That, and, usually <a target=\"_blank\" href='\/\/stackoverflow.com' title=\"StackOverflow\" rel=\"noopener\">StackOverflow<\/a>, thanks, where examples of achieving some styling ambition teach us a lot too.<\/p>\n<p>Yesterday, with <a target=\"_blank\" href='https:\/\/www.rjmprogramming.com.au\/ITblog\/clickaround-maps-google-chart-geo-chart-mobile-integration-tutorial-2\/' title='Clickaround Maps Google Chart Geo Chart Mobile Integration Tutorial' rel=\"noopener\">Clickaround Maps Google Chart Geo Chart Mobile Integration Tutorial<\/a>, we decided to &#8220;put a bit of oompha&#8221; into that &#8220;two bell emoji&#8221; ( ie. &#128276;&#128276; ) link &#8220;double buzzer&#8221; sound &#8220;production number&#8221;, and wanted to break down what we ended up with, for readers &#8230;<\/p>\n<table>\n<tr>\n<th>Our first try &#8230; okay for non-mobile &#8230; not as good for mobile &#8230;<\/th>\n<\/tr>\n<tr>\n<td>\n<code style=font-size:8px;word-break:break-all;text-wrap:wrap;><br \/>\n&lt;a id=\"aja\" target=\"myja\" title=\"\" onmouseover=\"if (!navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {  this.title=' ';  this.target='myja'; } \" onclick=\"if (!navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i) &amp;&amp; this.title == '') {  this.title=' ';  this.target='myja';  document.getElementById('myja').src=this.href; } setTimeout(function(){ document.getElementById('aja').target='_blank'; },100);\" href=\"\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm?youtubeid=7XMW6Z_Oq38&amp;jusJUNKtaudio=&amp;youtube_duration=2.000&amp;email=&amp;email=&amp;emoji=on&amp;c0=on&amp;i0=0&amp;j0=2&amp;i1=&amp;j1=&amp;i2=&amp;j2=&amp;i3=&amp;j3=&amp;i4=&amp;j4=&amp;i5=&amp;j5=&amp;i6=&amp;j6=&amp;i7=&amp;j7=&amp;i8=&amp;j8=&amp;i9=&amp;j9=&amp;i10=&amp;j10=&amp;i11=&amp;j11=&amp;i12=&amp;j12=&amp;i13=&amp;j13=&amp;i14=&amp;j14=&amp;i15=&amp;j15=&amp;i16=&amp;j16=&amp;i17=&amp;j17=&amp;i18=&amp;j18=&amp;i19=&amp;j19=&amp;i20=&amp;j20=&amp;i21=&amp;j21=&amp;i22=&amp;j22=&amp;i23=&amp;j23=&amp;i24=&amp;j24=&amp;i25=&amp;j25=&amp;i26=&amp;j26=&amp;i27=&amp;j27=&amp;i28=&amp;j28=&amp;i29=&amp;j29=\" rel=\"noopener\"&gt;&amp;#128276;&amp;#128276;&lt;\/a&gt;<br \/>\n<iframe id=\"myja\" name=\"myja\" src=\"\/About_Us.html\" style=\"display:none;\"><\/iframe><br \/>\n<\/code><\/p>\n<p> &#8230; begets &#8230;<\/p>\n<p><a id=\"xaja\" target=\"xmyja\" title=\"\" onmouseover=\"if (!navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {  this.title=' ';  this.target='xmyja'; } \" onclick=\"if (!navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i) { this.title == '') {  this.title=' ';  this.target='xmyja';  document.getElementById('xmyja').src=this.href; } setTimeout(function(){ document.getElementById('xaja').target='_blank'; },100); }\" href=\"\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm?youtubeid=7XMW6Z_Oq38&#038;justJUNKaudio=&#038;youtube_duration=2.000&#038;email=&#038;email=&#038;emoji=on&#038;c0=on&#038;i0=0&#038;j0=2&#038;i1=&#038;j1=&#038;i2=&#038;j2=&#038;i3=&#038;j3=&#038;i4=&#038;j4=&#038;i5=&#038;j5=&#038;i6=&#038;j6=&#038;i7=&#038;j7=&#038;i8=&#038;j8=&#038;i9=&#038;j9=&#038;i10=&#038;j10=&#038;i11=&#038;j11=&#038;i12=&#038;j12=&#038;i13=&#038;j13=&#038;i14=&#038;j14=&#038;i15=&#038;j15=&#038;i16=&#038;j16=&#038;i17=&#038;j17=&#038;i18=&#038;j18=&#038;i19=&#038;j19=&#038;i20=&#038;j20=&#038;i21=&#038;j21=&#038;i22=&#038;j22=&#038;i23=&#038;j23=&#038;i24=&#038;j24=&#038;i25=&#038;j25=&#038;i26=&#038;j26=&#038;i27=&#038;j27=&#038;i28=&#038;j28=&#038;i29=&#038;j29=\" rel=\"noopener\">&#128276;&#128276;<\/a><br \/>\n<iframe id=\"xmyja\" name=\"xmyja\" src=\"\/About_Us.html\" style=\"display:none;\"><\/iframe><\/p>\n<\/td>\n<\/tr>\n<tr>\n<th>Our second try &#8230; okay for non-mobile &#8230; better for mobile &#8230;<\/th>\n<\/tr>\n<tr>\n<td>\n<code style=font-size:8px;word-break:break-all;text-wrap:wrap;><br \/>\n&lt;a id=\"aja\" target=\"myja\" title=\"\" onmouseover=\"if (!navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {  this.title=' ';  this.target='myja'; } \" onclick=\"if (!navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i) { this.title == '') {  this.title=' ';  this.target='myja';  document.getElementById('myja').src=this.href; }  setTimeout(function(){ document.getElementById('aja').target='_blank'; },100); }\" href=\"\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm?youtubeid=7XMW6Z_Oq38&justJUNKaudio=&youtube_duration=2.000&email=&email=&emoji=on&c0=on&i0=0&j0=2&i1=&j1=&i2=&j2=&i3=&j3=&i4=&j4=&i5=&j5=&i6=&j6=&i7=&j7=&i8=&j8=&i9=&j9=&i10=&j10=&i11=&j11=&i12=&j12=&i13=&j13=&i14=&j14=&i15=&j15=&i16=&j16=&i17=&j17=&i18=&j18=&i19=&j19=&i20=&j20=&i21=&j21=&i22=&j22=&i23=&j23=&i24=&j24=&i25=&j25=&i26=&j26=&i27=&j27=&i28=&j28=&i29=&j29=\" rel=\"noopener\"&gt;&amp;#128276;&amp;#128276;&lt;\/a&gt;<br \/>\n&lt;iframe onload=\"if (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) { if (this.src.indexOf('About_Us.') != -1) { document.getElementById('aja').target='myja';<br \/>\n this.src=document.getElementById('aja').href + '&rand=' + Math.floor(Math.random() * 1989786); } } \" id=\"myja\" name=\"myja\" src=\"\/About_Us.html\" style=\"display:none;\"&gt;&lt;\/iframe&gt;<br \/>\n <\/code><\/p>\n<p> &#8230; begets &#8230; <\/p>\n<p><a id=\"aja\" target=\"_blank\" title=\"\" onmouseover=\"if (!navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {  this.title=' ';  this.target='myja'; } \" onclick=\"if (!navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i) &#038;&#038; this.title == '') {  this.title=' ';  this.target='myja';  document.getElementById('myja').src=this.href; } setTimeout(function(){ document.getElementById('aja').target='_blank'; },100);\" href=\"\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm?youtubeid=7XMW6Z_Oq38&#038;justaJUNKudio=&#038;youtube_duration=2.000&#038;email=&#038;email=&#038;emoji=on&#038;c0=on&#038;i0=0&#038;j0=2&#038;i1=&#038;j1=&#038;i2=&#038;j2=&#038;i3=&#038;j3=&#038;i4=&#038;j4=&#038;i5=&#038;j5=&#038;i6=&#038;j6=&#038;i7=&#038;j7=&#038;i8=&#038;j8=&#038;i9=&#038;j9=&#038;i10=&#038;j10=&#038;i11=&#038;j11=&#038;i12=&#038;j12=&#038;i13=&#038;j13=&#038;i14=&#038;j14=&#038;i15=&#038;j15=&#038;i16=&#038;j16=&#038;i17=&#038;j17=&#038;i18=&#038;j18=&#038;i19=&#038;j19=&#038;i20=&#038;j20=&#038;i21=&#038;j21=&#038;i22=&#038;j22=&#038;i23=&#038;j23=&#038;i24=&#038;j24=&#038;i25=&#038;j25=&#038;i26=&#038;j26=&#038;i27=&#038;j27=&#038;i28=&#038;j28=&#038;i29=&#038;j29=\" rel=\"noopener\">&#128276;&#128276;<\/a><br \/>\n<iframe onload=\"if (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) { document.getElementById('aja').target='myja';   if (this.src.indexOf('About_Us.') != -1) { document.getElementById('aja').target='myja';  \n this.src=document.getElementById('aja').href + '&#038;rand=' + Math.floor(Math.random() * 1989786); } } \" id=myja name=myja src=\/About_Us.html style=display:none;><\/iframe><\/p>\n<p> &#8230; working better because of <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html-----------------------------------------GETME\" rel=\"noopener\">tweaked<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html-----------------------------------------GETME\" rel=\"noopener\">karaoke_youtube_api.htm<\/a> <br \/><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm\" rel=\"noopener\">inhouse YouTube video interfacer<\/a>&#8216;s <font color=blue>new<\/font> &#8230;<\/p>\n<p><code style=font-size:8px;word-break:break-all;text-wrap:wrap;><br \/>\n  if (window.top) {<br \/>\n    <font color=blue>if (document.URL.indexOf('youtubeid=7XMW6Z_Oq38&') != -1 && navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n      setTimeout(function(){<br \/>\n       if (document.getElementById('audioejkaraoke')) {<br \/>\n       document.getElementById('audioejkaraoke').title=' ' + document.getElementById('audioejkaraoke').title;<br \/>\n       document.getElementById('audioejkaraoke').value=String.fromCodePoint(128276) + String.fromCodePoint(128276);<br \/>\n       document.getElementById('audioejkaraoke').style.position='absolute';<br \/>\n       document.getElementById('audioejkaraoke').style.left='0px';<br \/>\n       document.getElementById('audioejkaraoke').style.top='0px';<br \/>\n       document.getElementById('audioejkaraoke').style.backgroundColor='transparent';<br \/>\n       document.getElementById('audioejkaraoke').style.zIndex='99';<br \/>\n          document.getElementById('repeat').value=String.fromCodePoint(128276) + String.fromCodePoint(128276);<br \/>\n          document.getElementById('repeat').style.position='absolute';<br \/>\n          document.getElementById('repeat').style.left='0px';<br \/>\n          document.getElementById('repeat').style.top='-10px';<br \/>\n          document.getElementById('repeat').style.backgroundColor='transparent';<br \/>\n          document.getElementById('repeat').style.zIndex='199';<br \/>\n          document.getElementById('myiframe').style.position='absolute';<br \/>\n          document.getElementById('myiframe').style.left='-100px';<br \/>\n          document.getElementById('myiframe').style.top='-100px';<br \/>\n          document.getElementById('myiframe').style.zIndex='299';<br \/>\n          \/\/document.getElementById('myiframe').style.backgroundColor='transparent';<br \/>\n          document.getElementById('myiframe').style.opacity='0.0';<br \/>\n          if (aaconto) {<br \/>\n          aaconto.getElementById('player').style.opacity='0.0';<br \/>\n          } else {<br \/>\n          aaset=true;<br \/>\n          }<br \/>\n          document.body.style.backgroundColor='transparent';<br \/>\n       } else {<br \/>\n       setInterval(function(){<br \/>\n         if (document.getElementById('audioejkaraoke')) {<br \/>\n          if (('' + document.getElementById('audioejkaraoke').title + ' ').substring(0,1) != ' ') {<br \/>\n          document.getElementById('audioejkaraoke').title=' ' + document.getElementById('audioejkaraoke').title;<br \/>\n          document.getElementById('audioejkaraoke').value=String.fromCodePoint(128276) + String.fromCodePoint(128276);<br \/>\n          document.getElementById('audioejkaraoke').style.position='absolute';<br \/>\n          document.getElementById('audioejkaraoke').style.left='0px';<br \/>\n          document.getElementById('audioejkaraoke').style.top='0px';<br \/>\n          document.getElementById('audioejkaraoke').style.backgroundColor='transparent';<br \/>\n          document.getElementById('audioejkaraoke').style.zIndex='99';<br \/>\n          document.getElementById('repeat').value=String.fromCodePoint(128276) + String.fromCodePoint(128276);<br \/>\n          document.getElementById('repeat').style.position='absolute';<br \/>\n          document.getElementById('repeat').style.left='0px';<br \/>\n          document.getElementById('repeat').style.top='-10px';<br \/>\n          document.getElementById('repeat').style.backgroundColor='transparent';<br \/>\n          document.getElementById('repeat').style.zIndex='199';<br \/>\n          document.getElementById('myiframe').style.position='absolute';<br \/>\n          document.getElementById('myiframe').style.left='-100px';<br \/>\n          document.getElementById('myiframe').style.top='-100px';<br \/>\n          document.getElementById('myiframe').style.zIndex='299';<br \/>\n          \/\/document.getElementById('myiframe').style.backgroundColor='transparent';<br \/>\n          document.getElementById('myiframe').style.opacity='0.0';<br \/>\n          if (aaconto) {<br \/>\n          aaconto.getElementById('player').style.opacity='0.0';<br \/>\n          } else {<br \/>\n          aaset=true;<br \/>\n          }<br \/>\n          document.body.style.backgroundColor='transparent';<br \/>\n          }<br \/>\n         }<br \/>\n       }, 1000);<br \/>\n       }<br \/>\n       if (top.document.getElementById('aja')) {<br \/>\n       var boxis=top.document.getElementById('aja').getBoundingClientRect();<br \/>\n       \/\/alert('boxis.left=' + boxis.left + ' ' + top.document.getElementById('aja').innerHTML);<br \/>\n       if (top.document.getElementById('aja').innerHTML.indexOf('&lt;iframe') == -1) {<br \/>\n       \/\/alert('Boxis.left=' + boxis.left);<br \/>\n       top.document.getElementById('myja').style.width='' + eval(2 * boxis.width) + 'px';<br \/>\n       top.document.getElementById('myja').style.height='' + eval(1 * boxis.height) + 'px';<br \/>\n       setTimeout(function(){<br \/>\n       top.document.getElementById('aja').innerHTML=top.document.getElementById('myja').outerHTML.replace('\/About_Us.html',top.document.getElementById('aja').href).replace(' onload=',' data-onload=').replace(' id=',' data-id=').replace(' name=',' name-id=').replace('none;','inline-block;');<br \/>\n       }, 2000);<br \/>\n       } else if (3 == 4) {<br \/>\n       top.document.getElementById('myja').style.position='absolute';<br \/>\n       top.document.getElementById('myja').style.left='' + boxis.left + 'px';<br \/>\n       top.document.getElementById('myja').style.top='' + boxis.top + 'px';<br \/>\n       top.document.getElementById('myja').style.width='' + boxis.width + 'px';<br \/>\n       top.document.getElementById('myja').style.height='' + boxis.height + 'px';<br \/>\n       top.document.getElementById('myja').style.display='block';<br \/>\n       top.document.getElementById('myja').style.zIndex='99';<br \/>\n       \/\/top.document.getElementById('aja').innerHTML='&nbsp;&nbsp;';<br \/>\n       }<br \/>\n       }<br \/>\n      }, 1000);<br \/>\n    }<\/font><br \/>\n    if (top.document.URL.indexOf('\/esp_ornot_esp.') != -1 || parent.document.URL.indexOf('\/esp_ornot_esp.') != -1) {<br \/>\n      if (top.document.title.indexOf(' justaudio ') != -1) {<br \/>\n        asuffis='&justaudio=&';<br \/>\n        bsuffis=' name=justaudio ';<br \/>\n      }<br \/>\n    }<br \/>\n  }<br \/>\n<\/code>\n<\/td>\n<\/tr>\n<\/table>\n<p>Let&#8217;s start with &#8230;<\/p>\n<blockquote><p>\nWhy can&#8217;t we just link to a <a target=\"_blank\" title=\"YouTube\" href='\/\/youtube.com' rel=\"noopener\">YouTube<\/a> <a target=\"_blank\" title=\"YouTube Buzzer video, thanks\" href='https:\/\/www.youtube.com\/watch?v=7XMW6Z_Oq38' rel=\"noopener\">video<\/a> URL webpage off any old platform or web browser incarnation?\n<\/p><\/blockquote>\n<p>Well, you could!  But we wanted a less obvious approach <font size=1>(and we were not sure about mobile platforms, trying this)<\/font>, only relevant for scenarios where you are only interested in the audio stream of a YouTube video <font size=1>(it should be noted)<\/font>, that is hiding from the reader &#8220;the mechanics&#8221; of what we are doing <font size=2>(to get a cheap giggle<\/font><font size=1> &#8230; there, are you happy now?!<\/font><font size=1>)<\/font>.<\/p>\n<blockquote style=word-break:break-all;text-wrap:wrap;><p>\nWhat does Javascript <i>if (!navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {  }<\/i> if test achieve?\n<\/p><\/blockquote>\n<p>If this test returns <i>true<\/i> we have detected a non-mobile platform\/web browser scenario.<\/p>\n<blockquote><p>\nWhat does the HTML <i>target<\/i> attribute of an <i>a<\/i> HTML element do?\n<\/p><\/blockquote>\n<p>That <i>target<\/i> attribute determines the &#8220;navigational place&#8221; of the <i>href<\/i> attribute URL of that <i>a<\/i> link where &#8230;<\/p>\n<ol>\n<li><i>_blank<\/i> opens in a new window<\/li>\n<li><i>_self<\/i> clobbers current window<\/li>\n<li><i>_top<\/i> adds a new (tabbed) window (perhaps from the viewpoint of a child HTML iframe window)<\/li>\n<li>other named <i>target<\/i> point to the <i>name<\/i> attribute of an HTML iframe element, presumably, in the current window<\/li>\n<\/ol>\n<blockquote style=word-break:break-all;text-wrap:wrap;><p>\nWhat does HTML code snippet <font size=1> onload=&#8221;if (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) { if (this.src.indexOf(&#8216;About_Us.&#8217;) != -1) { document.getElementById(&#8216;aja&#8217;).target=&#8217;myja&#8217;;<br \/>\n this.src=document.getElementById(&#8216;aja&#8217;).href + &#8216;&amp;rand=&#8217; + Math.floor(Math.random() * 1989786); } } &#8220;<\/font> do as the onload event logic of the &#8220;second version&#8221; iframe incarnation?\n<\/p><\/blockquote>\n<p>We decided that we needed to get assistance from <a target=\"_blank\" title='Inhouse URL' href='\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm?youtubeid=7XMW6Z_Oq38&#038;justaJUNKudio=&#038;youtube_duration=2.000&#038;email=&#038;email=&#038;emoji=on&#038;c0=on&#038;i0=0&#038;j0=2&#038;i1=&#038;j1=&#038;i2=&#038;j2=&#038;i3=&#038;j3=&#038;i4=&#038;j4=&#038;i5=&#038;j5=&#038;i6=&#038;j6=&#038;i7=&#038;j7=&#038;i8=&#038;j8=&#038;i9=&#038;j9=&#038;i10=&#038;j10=&#038;i11=&#038;j11=&#038;i12=&#038;j12=&#038;i13=&#038;j13=&#038;i14=&#038;j14=&#038;i15=&#038;j15=&#038;i16=&#038;j16=&#038;i17=&#038;j17=&#038;i18=&#038;j18=&#038;i19=&#038;j19=&#038;i20=&#038;j20=&#038;i21=&#038;j21=&#038;i22=&#038;j22=&#038;i23=&#038;j23=&#038;i24=&#038;j24=&#038;i25=&#038;j25=&#038;i26=&#038;j26=&#038;i27=&#038;j27=&#038;i28=&#038;j28=&#038;i29=&#038;j29=' rel=\"noopener\">our inhouse YouTube video interfacing player<\/a>, when it came to mobile platforms and web browsers, to get to a point where &#8230;<\/p>\n<ul>\n<li>unbeknown to <font size=1>such mobile<\/font> users<\/li>\n<li>when they tap the &#128276;&#128276; &#8220;buzzer&#8221; button emojis &#8230;<\/li>\n<li>it is arranged from the child iframe inhouse YouTube video interfacing player web application using <a target=\"_blank\" title='Overlay related blog postings around here' href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/overlay\" rel=\"noopener\">&#8220;overlay&#8221;<\/a> concepts &#8230;\n<ol>\n<li>position: absolute<\/li>\n<li>opacity<\/li>\n<li>z-index<\/li>\n<li>top and left positioning<\/li>\n<li>width and height dimensioning<\/li>\n<li>&#128276;&#128276; into some button content\n<\/ol>\n<p> &#8230; that what they are tapping is a YouTube video element\n<\/li>\n<li>looking like &#128276;&#128276; at levels of a smaller z-index seen through opacity:0.0 higher z-index levels, the topmost transparent but high z-index one being the YouTube video element which is that webpage area&#8217;s &#8220;action item&#8221; <font size=1>&#8230; if you will<\/font><\/li>\n<\/ul>\n<blockquote><p>\nHuh?!\n<\/p><\/blockquote>\n<p>On mobile platforms, media cannot play, these days, unless it is as a direct result of a user tap (excluding programmatically produced taps).  See all this in action, with thanks to <a target=\"_blank\" title=\"FreeConvert\" href='http:\/\/www.freeconvert.com\/mov-to-mp4\/download' rel=\"noopener\">FreeConvert<\/a>, below &#8230;<\/p>\n<p><video style=\"width:100%;\" title='Making of making of ...' controls><source src='\/\/www.rjmprogramming.com.au\/HTMLCSS\/clickarounds_making_of.mp4' tyle='video\/mp4'><\/source><\/video><\/p>\n<p>And so, yes &#8230; was it worth it?  Perhaps not to do with the job at hand, but for future reference, we&#8217;re happy to give this added <i>oompha<\/i> to this effort.<\/p>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d67558' onclick='var dv=document.getElementById(\"d67558\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/overlay\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d67558' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d67637' onclick='var dv=document.getElementById(\"d67637\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/audio\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d67637' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d67647' onclick='var dv=document.getElementById(\"d67647\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/delay\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d67647' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d67666' onclick='var dv=document.getElementById(\"d67666\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/emoji\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d67666' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d67674' onclick='var dv=document.getElementById(\"d67674\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/textarea\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d67674' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d67689' onclick='var dv=document.getElementById(\"d67689\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/button\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d67689' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d67699' onclick='var dv=document.getElementById(\"d67699\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/hierarchy\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d67699' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d67730' onclick='var dv=document.getElementById(\"d67730\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/hashtag\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d67730' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d68495' onclick='var dv=document.getElementById(\"d68495\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/switch\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d68495' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d68519' onclick='var dv=document.getElementById(\"d68519\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/wikipedia\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d68519' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d69429' onclick='var dv=document.getElementById(\"d69429\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/wikipedia\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d69429' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Further to the recent External Javascript YouTube Audio of Video Research Tutorial &#8230; we have made the textarea text stand out more the loop lines up to any looping tick presented we&#8217;ve improved the looping logic &#8230; in the changed &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/youtube-audio-only-mobile-looping-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,14,37],"tags":[113,576,587,652,2205,3870,795,932,997,1262,1319,1369,1493,2017],"class_list":["post-69429","post","type-post","status-publish","format-standard","hentry","category-elearning","category-event-driven-programming","category-tutorials","tag-audio","tag-html","tag-iframe","tag-javascript","tag-loop","tag-looping","tag-mobile","tag-php","tag-programming","tag-textarea","tag-tutorial","tag-video","tag-youtube","tag-youtube-api"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/69429"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=69429"}],"version-history":[{"count":4,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/69429\/revisions"}],"predecessor-version":[{"id":69469,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/69429\/revisions\/69469"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=69429"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=69429"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=69429"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}