COPY SOURCE CODE FOR ytvideo-play.html, test

Before reading this post you should see the post:
http://phanhung20.blogspot.com/2021/02/copy-source-code-for-ytvideo-searchhtml.html
The file ytvideo-search.html can make all javascript files of the form objpage- ... .js. Those js files will be loaded by the file ytvideo-play.html for playing youtube videos.

Tap COPY to create the file objpage-all.js




Tap COPY to create the file objpage-herald-winkler.js



Tap button COPY for copying the source code of ytvideo-play.html to clipboard.




<!DOCTYPE html>
<html>
    <meta charset=utf-8>
    <meta name="author" content="pvhung20">
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
     <script src="objpage-all.js"></script>
    <style>
        body {
            font-family: Arial;
            font-size: 12pt
            margin: 0px;
            padding: 0px;
        }
        .bar {
            width: 576px;
            height: 20px;
            background-color: #A4D3EE;
            color: black;
            font-weight: bold;
            padding: 6px;
            border-width: 5px;
            border-style: outset;
        }
        .bargreen {
            width: 576px;
            height: 20px;
            background-color: #A6D785;
            color: black;
            font-weight: bold;
            padding: 6px;
            border-width: 5px;
            border-style: outset;
        }
        input[type="button"],
        button {
            cursor: pointer;
            padding: 0px;
            font-size: 16pt;
        }
        input[type=checkbox] {
            width: 24px;
            height: 24px;
        }
        a {
            color: blue;
            text-decoration: none;
        }
        td {
            font-size: 12pt;
            vertical-align: top;
            border: 1px gray solid;
        }
        textarea {
            font-size: 14pt;
        }
        #progress7{
        font-weight:bold;
        color:red;
        font-size:14pt;
        }
        #info7{font-size:14pt;}

         .codeSp{color:#CC6600}
    </style>
    <body>

        <div align="center">
            <div id="player" style="width:600px;background-color:black;">
            </div>
            <div id="vtitle" style="text-align:center;width:600px;height:51px;color:white;background-color:#333333;padding-top:7px;margin-top:-5px">
            </div>
            <div style="margin:12px">
                <span id="currentSp"></span>&nbsp;/&nbsp;
                <span id="durationSp"></span>
            </div>
		 <button onclick="$('#helpDiv').toggle('slow')">HELP (?)</button>
            <input type="button" onclick="bigNormal()" value="Size">
            <input type="button" onclick="player.pauseVideo();" value="Pause">
            <input type="button" onclick="player.playVideo();" value="Play">
            <button id="nBut" type="button" onclick="nextButton()">Next</button>
           <br>
		 <input type="checkbox" class="chk1">&nbsp;
		<span style="font-size:14pt">
		Like ckeckbox (mark the currently playing video)<br>
		<span style="color:red; font-size:12pt">
		Before loading another objpage file, tap UPDATE for making
		objselect file.
		</span>
          </span><br>
           <br>
	   <div id="helpDiv" style="display:none;width:590px;height:600px;overflow:auto;background-color:#ffffe0;text-align:left;padding:10px;line-height:150%; font-size:14pt; border:1px solid gray; margin-bottom:16px">
	<p style="color:red">After reading you can tap button 
	<button>HELP (?)</button>
	once again to hide this help contain.</p>
<img width="95%" src="IMG_4560.jpg" style="border:1px solid gray">
<br>
File ytvideo-play.html performs the following tasks:<br>
- load a file in the form of objpage- ... js and create control tables.
<br>
- play videos continuosly one after another.
<br>
- While listening, watching videos you can tap Like checkbox to choose the videos you like.
<br>
-Finally before you load the new file, remember to tap UPDATE to create the following content:
<br>
<span class="codeSp">
<br>
objselect = <br>
[20,49,74,98,119,124,147,160,168,178,236,241,293,311,469,519];
</span>
<br><br>
<img width="95%" src="IMG_4563.jpg" style="border:1px solid gray">
<br><br>
	   </div>
		
            <div class="bar">
                A- SIMULATING SEARCH FOR MAXIMUM NUMBER OF ITEMS
			<a href="#" onclick="search1HideShow(this); return false">&nbsp;&nbsp;&nbsp;&nbsp;Hide this</a>
            </div>

		 <div id="search7Div">
		The following 4 videos are ready for playing (don't use Like checkbox and Next);
            <br>
		  <a style="font-size:14pt;" href="#" onclick="player.loadVideoById('77YwsoKsNV8',  270, 'default'); return false">Relaxing Music</a>,&nbsp;
            <a style="font-size:14pt;" href="#" onclick="player.loadVideoById('JgHXVJb5Ztw', 3435, 'default'); return false">Bolero for Lovers</a>,&nbsp;
            <a style="font-size:14pt;" href="#" onclick="player.loadVideoById('TibXopReykQ', 382, 'default'); return false">Romantic Guitar</a>,&nbsp;
            <a style="font-size:14pt;" href="#" onclick="player.loadVideoById('o5QjDboEfvI', 'default'); return false">Vienna Hallstatt</a>
            <br><br>
		<span style="font-size:14pt"><span style="color:red; font-weight:bold">
		To start:&nbsp;</span>Choose a file (objpage- ...js) then tap button LOAD JS</span>
            <br>
            <input type="text" value="objpage-herald-winkler.js" id="jsfile" size="48" style="font-size:12pt">
            <button onclick="loadObjpage()">LOAD JS</button>
            <br><br>
            <div id="list7" style="width:590px;height:120px;overflow:auto;background-color:#EEEEEE;text-align:left;padding:10px;line-height:160%; font-size:12pt; border:1px solid gray">
            </div>
            <br>
           <textarea id="lenArea" style="width:580px; height:26px">
</textarea>
            <br>
            <span id="progress7"></span> &nbsp;
            <span id="info7"></span>
            <br><br>
            <button onclick="make7()">MAKE CONTROLS</button>
            <br>
		 </div> 
            <div class="bargreen">
                B1- PLAY SINGLE VIDEOS
            </div>
            <br>
            <button onclick="vcheckedTop('vbody7')">VCHECKED TOP</button>
            <button onclick="tTop('vbody7')">TOP</button>
            <button onclick="tCur()">CURRENT</button>
            <button onclick="tBott('vbody7')">BOTTOM</button>
            <br>
            <br>
            <div id="div7" style="padding-top:4px;width:598px;height:300px;background-color:#DDDDDD;border:1px solid gray; overflow:auto;font-size:12pt">
                <table width="594" hight="250" style="color:black">
                    <tbody id="vbody7">
                    </tbody>
                </table>
            </div>
            <br>
            <div class="bargreen">
                B2- PLAY PLAYLISTS
            </div>
            <br>
            <div id="pdiv7" style="padding-top:4px;width:598px;height:300px;background-color:#DDDDDD;border:1px solid gray; overflow:auto;font-size:12pt">
                <table width="594" hight="250" style="color:black">
                    <tbody id="pbody7"></tbody>
                </table>
            </div>
            <br>
            <div class="bargreen">
                B3- FOR MAKING objselect-....js FILE
            </div>
            <br>
            <span style="font-weight:bold">
		  Remember this file name:&nbsp;
		  <span id="remember" style="color:red"></span>
            </span>
            <br>
            <button onclick="rowsUpdate(true)">UPDATE</button>
            <button onclick="copy('area7a')">COPY</button>
            <br><br>
            <textarea id="area7a" style="width:580px; height:150px">
</textarea>
            <br><br>
            <div class="bargreen">
                B4- VIEW THE CONTAIN OF WORKING JAVASCRIPT FILES
            </div>
            <br>
            <span id="objpageSp" style="font-size:14pt"></span>
            <br><br>
            <textarea id="area7" style="width:580px; height:240px">
</textarea>
            <br><span style="font-size:14pt">
The contain of the file objselect ... .js<br>
            at loading, before updating.<br>
If you see objselect = [], it means the file objselect ... .js doesn't exist.
            </span></br>
            <textarea id="area8" style="width:580px; height:130px">
</textarea>
            <br><span style="font-size:14pt">
The contain of the file objpage-all.js at loading
		  </span><br>
            <textarea id="area9" style="width:580px; height:130px">
</textarea>
            <br>
           <br>
            <div class="bargreen">
                B5- VIEW TWO JSON PAGES FROM 
                <span id="objpageSp1"></span>
            </div>
The page before the last
		 <br>
<span id="itemsLength1"></span>
<br>
<textarea id="area10a" style="width:580px; height:300px">
</textarea>
            <br>
The last page
<br>
<span id="itemsLength"></span>
<br>
<textarea id="area10" style="width:580px; height:300px">
</textarea>
            <br><br>
            </div>

            <script>
function pageShow(){
          ss = lenArray.join(', ');
          $('#lenArea').val(ss);
		nn = objpage.page.length;
		num = nn - 1;
		st = JSON.stringify(objpage.page[num], null, 2);
		$('#area10').val(st);
		objtest = JSON.parse(st);
		itLen = objtest.items.length;
		$('#itemsLength').html('page[' + num + ']; ' + itLen + ' items');
		st1 = JSON.stringify(objpage.page[num - 1], null, 2);
		$('#area10a').val(st1);
		objtest1 = JSON.parse(st1)
		itLen1 = objtest1.items.length;
		$('#itemsLength1').html('page[' + (num - 1) + ']; ' + itLen1 + ' items');
}

                function readyTermJS(term) {
                    $("#jsfile").val(term);
                }

			function search1HideShow(obj){
				$('#search7Div').toggle();
				disp = $('#search7Div').css('display');
				if(disp == 'none'){
					$(obj).html('&nbsp;&nbsp;&nbsp;&nbsp;Show this')
				}else{
					$(obj).html('&nbsp;&nbsp;&nbsp;&nbsp;Hide this');
				}
			}
			
			function makeList(){
				len = objpageAll.length;
				ss = '';
				for(i=0; i<len; i++){
					ss += '<a href="#" onclick="readyTermJS(\'' +
					objpageAll[i] + '\'); return false">' + 
					objpageAll[i] + '</a><br>';
				}
				$('#list7').html(ss)
			}

                /////////////// VIDEO PLAYER MAKING ////////////////////////

                $(document).ready(function() {
                    makeList();
                    setInterval(myTime, 100);
				$('.chk1').change(function(){
			     bool = $(this).prop("checked");
		          $(curObj).closest('tr').find('.vselected').prop("checked", bool);
				});
                });

                normalW = '580';
                normalH = '369';
                var player;
                startvid = '77YwsoKsNV8';
                var tag = document.createElement('script');
                tag.src = "http://www.youtube.com/player_api";
                var firstScriptTag = document.getElementsByTagName('script')[0];
                firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

                function onYouTubePlayerAPIReady() {
                    player = new YT.Player('player', {
                        width: normalW,
                        height: normalH,
                        videoId: startvid,
                        playerVars: {
                            'autoplay': 0,
                            'rel': 0,
                            'showinfo': 0,
                            'showsearch': 0,
                        },
                        events: {
                            'onStateChange': onPlayerStateChange,
                            'onError': onPlayerError
                        }
                    });
                }

                function onPlayerError(error) {
                    nextVid();
                }

                singleVideo = false;
                demo = true;

                function onPlayerStateChange(event) {
                    if (event.data == 0) {
                        playerState = 'ended';
                        nextVid();
                    }

                    switch (event.data) {
                        case YT.PlayerState.PLAYING:
                            if (!singleVideo) {
                                if (demo) {
                                    $('#vtitle').html('');
                                    $('#vtitle').html(player.getVideoData().title);
                                } else {
                                    var aa = $(curObj).closest('tbody').find('a');
                                    var nn = $(aa).index(curObj);
                                    var len = $(aa).length;
                                    $('#vtitle').html((nn + 1) + '/' + len + ': ' + player.getVideoData().title)
                                    listLength = player.getPlaylist().length;
                                    listIndex = player.getPlaylistIndex();
                                }
                            }
                            break;
                    }
                }

                function myTime() {
                    if (player.getPlayerState() == 1) {
                        curTime = player.getCurrentTime();
                        document.getElementById('currentSp').innerHTML = sformat(curTime);
                        document.getElementById('durationSp').innerHTML = sformat(Math.round(player.getDuration()));
                    }
                }

                function sformat(s) {
                    var fm = [
                        Math.floor(Math.floor(s / 60) / 60) % 60, //HOURS
                        Math.floor(s / 60) % 60, //MINUTES
                        Math.floor(s % 60) //SECONDS
                    ];
                    var xx = $.map(fm, function(v, i) {
                        return ((v < 10) ? '0' : '') + v;
                    }).join(':');
                    var yy = xx.replace(/^0:|^00:|^0/g, '');
                    zz = yy.replace(/^0/g, '');
                    return zz
                }

                function bigNormal() {
                    size = $('#player').width();
                    if (size == 600) {
                        $('#player').width('980px');
                        $('#player').height('551px');
                        $('#vtitle').width('980px');
                    } else {
                        $('#player').width('600px')
                        $('#player').height('349px');
                        $('#vtitle').width('600px');
                    }
                }

                ///////////////// PLAY VIDEOS ////////////

                curObj = {}
                singleVideo = false;
                currColor = "#FFE1B2";

                function playVid(obj) {
                    bool = $(obj).closest('tr').find('.vselected').prop('checked');
$('.chk1').prop("checked", bool);
                    if (typeof curObj != 'undefined') {
                        $(curObj).closest('tr').css('background-color', '#DDDDDD');
                    }
                    $(obj).closest('tr').css('background-color', '#FFE1B2');
                    singleVideo = true;
                    curObj = obj;
                    var aa = $(obj).closest('tbody').find('a');
                    // var len11 = $(aa).length;
                    var nn = $(aa).index(obj);
                    var len = $(aa).length;
                    var viTi = $(aa).eq(nn).html();
                    $('#vtitle').html((nn + 1) + '/' + len + ' ' + viTi);
                    var viId = $(aa).eq(nn).attr('title')
                    player.loadVideoById(viId, "default");
                }

                function nextVid() {
                    $(curObj).closest('tr').css('background-color', '#DDDDDD');
                     if (singleVideo) {
                        var aa = $(curObj).closest('tbody').find('a');
                        var nn = $(aa).index(curObj);
                        var num = nn + 1;
                        var len = $(aa).length;
                        if (num == len) {
                            num = 0
                        }
                        var nextObj = $(aa).eq(num)
                        playVid(nextObj);
                    } else {
                        // thuPL();
                    }
                }

                function loadPLId(thi) {
                    singleVideo = false;
                    if (typeof curObj != 'undefined') {
                        $(curObj).closest('tr').css('background-color', '#DDDDDD');
                    }
                    $(thi).closest('tr').css('background-color', '#FFE1B2');
                    curObj = thi;
                    var pid = thi.title;
                    var aa = $(thi).closest('tbody').find('a');
                    var nn = $(aa).index(thi);
                    var len = $(aa).length;
                    $('#vtitle').html((nn + 1) + '/' + len);
                    player.loadPlaylist({
                        'list': pid,
                        'listType': 'playlist',
                        'index': 0,
                        'startSeconds': 0,
                        'suggestedQuality': 'default'
                    });
                }

                function nextButton() {
                    if (singleVideo) {
                        nextVid();
                    } else {
                        nextPL();
                    }
                }

                function nextPL() {
                    if (typeof curObj != 'undefined') {
                        $(curObj).closest('tr').css('background-color', '#DDDDDD');
                    }
                    player.stopVideo();
                    bb = $(curObj).closest('tbody').find('a');
                    var nn = $(bb).index(curObj);
                    var num = nn + 1;
                    singleVideo = false;
                    curObj = $(bb).eq(num);
                    $(curObj).closest('tr').css('background-color', '#FFE1B2');
                    pid = $(curObj).attr('title');
                    player.loadPlaylist({
                        'list': pid,
                        'listType': 'playlist',
                        'index': 0,
                        'startSeconds': 0,
                        'suggestedQuality': 'default'
                    });
                }

                //////////////////// FINAL JS BUILD ////////////////////

                function rowsUpdate(plus) {
                    vcArr = [];
                    var ar = $('#vbody7 a');
                    for (i = 0; i < ar.length; i++) {
                        if (plus) {
                            len = $(ar[i]).closest('tr').find('.vselected:checked').length
                            if (len > 0) {
                                vc7ht = $(ar[i]).closest('tr').find('b').html();
                                vc7ht = vc7ht.replace('.', '');
                                vcArr.push(vc7ht);
                            }
                        }
                    }
                    vcArr1 = vcArr.sort(function(a, b){return a-b});
                    ss = file;
                    ss = ss.replace('objpage', 'objselect');
   				$('#remember').html(ss);
                    helpSt = '/* 1- Tap the button COPY to copy this contain to clipboard.\n' +
				'2- Tap the button x at the top right corner to quit this running file\n' +
				'3- Tap the button + in the bottom left corner to create a new file with the name: '+ ss +
				 '\n and paste there the contain from clipboard */\n\n';
				
                    st1 = helpSt + 'objselect = [' + vcArr1.join(',') + '];\n';
                    $('#area7a').val(st1);
                    var ar1 = $('#pbody7 a');
                    var ar2 = $('#pbody7 img');
                    for (i = 0; i < ar1.length; i++) {
                        sel = '';
                        if (plus) {
                            len1 = $(ar1[i]).closest('tr').find('.pselected:checked').length
                        }
                    }
                }

                //////// TABLE MANIPULATION //////////

                function tTop(rr) {
                    var elem = $('#' + rr + ' tr:first');
                    if (rr == 'vbody7') {
                        var container = $('#div7')
                    } else {
                        var container = $('#div1')
                    }
                    container.scrollTop(
                        elem.offset().top - container.offset().top + container.scrollTop()
                    );
                }

                function tBott(rr) {
                    var elem = $('#' + rr + ' tr:last');
                    if (rr == 'vbody7') {
                        var container = $('#div7');
                    } else {
                        var container = $('#div1');
                    }
                    container.scrollTop(
                        elem.offset().top - container.offset().top + container.scrollTop()
                    );
                }

                function tCur() {
                    var elem = $(curObj).closest('tr');
                    dd = elem.closest('tbody').attr('id');
                    if (dd == 'vbody7') {
                        var container = $('#div7');
                    } else {
                        var container = $('#div1');
                    }
                    container.scrollTop(
                        elem.offset().top - container.offset().top + container.scrollTop()
                    );
                }

                function vcheckedTop(tbd) {
                    var arr = $('#' + tbd).find('.vselected:checked');
                    if (arr.length === 0) {
                        alert('Error!\nYou have to select at least one item\nbefore clicking the button VCHECKED TOP');
                        return
                    }
                    var top = $('#' + tbd).find('tr').eq(0);
                    $(arr).each(function(index) {
                        row = arr[index].closest('tr');
                        $(row).find('.moving').prop('checked', false);

                        $(row).insertBefore(top);
                    });
                    tTop(tbd);
                }

                //////////////// SEARCH SIMULATING (LOAD VIDEOS) ////////////////
                var objpage = {}
                objselect = [];
			 file = '';
                function loadObjpage() {
                    objpage = {};
                    objselect = [];
                    file = $('#jsfile').val();
                    $('#objpageSp').html(file);
                     $('#objpageSp1').html(file);
                    file1 = file.replace('objpage', 'objselect');
                    $.getScript(file, function() {

                    });
                    $.getScript(file1, function() {
				   search7();
                    });
                }

                function search7() {
                    nb7 = -1
  			     vid7 = []; pid7 = []; cha7 = [];
                    vcount7 = 1; pcount7 = 1;
                    $('#vbody7, #pbody7').empty();
                    $('#progress7, #info7').empty();
                    interval = setInterval(myFunction7, 200);
                }

                nb7 = -1

                function myFunction7() {
                    nb7++;
                    $('#progress7').html(nb7 + 1);
                    searchVid7(nb7);
                }

                var response;

                pageArr7 = [];
lenArray = [];

                function searchVid7(n) {
                    jsonSt = JSON.stringify(objpage.page[n]);
                    data = JSON.parse(jsonSt);
                    jSt = JSON.stringify(data, null, 2);
                    lenArray.push(objpage.page[n].items.length);
                    pageArr7.push(jSt);
                    myCallback7(data);
                }

                vid7 = []; pid7 = []; cha7 = [];

                function myCallback7(response) {
                    len = response.items.length;
if(len > 0){
                    for (i = 0; i < len; i++) {
                        vv = response.items[i].id.videoId;
                        if (typeof vv != 'undefined') {
                            tt = response.items[i].snippet.title;
                            vid7.push(vv + '#' + tt);
                        }

                        pp = response.items[i].id.playlistId;
                        if (typeof pp != 'undefined') {
                            tt = response.items[i].snippet.title;
                            tt = tt.replace(/#/g, '');
                            try {
                                var listImage = response.items[i].snippet.thumbnails.default.url;

                            } catch (err) {
                                listImage = 'yt-playlist.jpg';
                                listImage1 = 'yt-playlist.jpg';
                            }

                            pid7.push(pp + '#' + tt + '#' + listImage);
                        }
                        cc = response.items[i].id.channelId;
                        if (typeof cc != 'undefined') {
                            cha7.push(cc)
                        }
           }
}else{
           pageShow();
                        clearInterval(interval);
				    allP = objpage.page.length;
				    // alert('allP = ' + allP);
                        $('#progress7').html('DONE! ' + (allP - 1) + ' pages');
                        sum = vid7.length + pid7.length + cha7.length;
                        $('#info7').html('Total: ' + sum + ' = ' + vid7.length + ' videos + ' + pid7.length + ' playlists + ' + cha7.length + ' channels');
                        objpageSt = '';
                        zlen = pageArr7.length;
                        for (z = 0; z < zlen; z++) {
                            objpageSt += pageArr7[z];
                            if (z < (zlen - 1)) {
                                objpageSt += ', \n';
                            }
                        }
				    objpageSt = 'objpage = {"page":[\n' + objpageSt + ']}'
			$('#area7'). val(objpageSt);
			
			selectSt = objselect.join(',');
			$('#area8').val('objselect =  [' + selectSt + '];');
			
			allSt = objpageAll.join(',\n');
			$('#area9').val('objpageAll = [\n' + allSt + '\n];');
				    alert('Now tap button MAKE CONTROLS.');
           }
}

                vcount7 = 1; pcount7 = 1;

                function make7() {
                    len = vid7.length;
                    vcount = 1;
                    for (i = 0; i < len; i++) {
                        if (objselect.includes(vcount7)) {
                            check = 'checked';
                        } else {
                            check = ''
                        }
                        arr = vid7[i].split('#');
                        videoID = arr[0];
                        titSt = arr[1];
                        var vv7 = '<tr width="98%">' +
                            '<td width="80px"><img width="88" height="65" ' +
                            'src="http://img.youtube.com/vi/' + videoID + '/default.jpg"></td>' +
                            '<td class="showTD">' +
                            '<input type="checkbox" class="vselected" onclick="selectItem(this)" ' + check + '>' +
                            '<b class="vc7">' + vcount7 + '.</b> <a class="vAnchor" href="#" title="' + videoID + '" onclick = "playVid(this); return false">' +
                            titSt + '</a></td></tr>';
                        vcount7++;
                        $('#vbody7').append(vv7)
                    }
                    len2 = pid7.length;
                    pcount7 = 1;
                    for (k = 0; k < len2; k++) {
                        arr = pid7[k].split('#');
                        xx = arr[0];
                        ptitle = arr[1];
                        listImage = arr[2];
                        var pp7 = '<tr width="98%">' +
                            '<td width="80px"><img width="88" height="65" src="' +
                            listImage + '"></td>' +
                            '<td class="showTD">' +
                            '<input type="checkbox" class="pselected" onclick="selectItem(this)">' +
                            '<b>' + pcount7 + '.</b> <a class="pAnchor" href="#" title="' + xx + '" onclick = "loadPLId(this); return false">' +
                            ptitle + '</a></td></tr>';
                        pcount7++;
                        $('#pbody7').append(pp7);
                    }

                    $('.vselected').change(function() {
                        bool = $(this).prop("checked");
                        an = $(this).closest('tbody').find('a');
                        thi = $(this).closest('tr').find('a');
                        xx = $(an).index(thi);
                        anc = $(curObj).closest('tbody').find('a');
                        yy = $(anc).index(curObj);
                        if (xx == yy) {
                            $('.chk1').prop("checked", bool);
                        }
                    });
                }

//////////// COPY THE CONTENT OF AN AREA //////////////
                var copy = function(elementId) {
                    var input = document.getElementById(elementId);
                    var isiOSDevice = navigator.userAgent.match(/ipad|iphone/i);
                    if (isiOSDevice) {
                        var editable = input.contentEditable;
                        var readOnly = input.readOnly;
                        input.contentEditable = true;
                        input.readOnly = false;
                        var range = document.createRange();
                        range.selectNodeContents(input);
                        var selection = window.getSelection();
                        selection.removeAllRanges();
                        selection.addRange(range);
                        input.setSelectionRange(0, 999999);
                        input.contentEditable = editable;
                        input.readOnly = readOnly;
                    } else {
                        input.select();
                    }
                    document.execCommand('copy');
                }
            </script>
    </body>
</html>

THE FILE ytvideo-play.html WORKS ALMOST LIKE THIS DEMO FILE

 / 

  Like ckeckbox (mark the currently playing video)
Before loading another objpage file, tap UPDATE for making objselect file.


A- SIMULATING SEARCH FOR ALL ITEMS     Hide this
The following 4 videos are ready for playing (don't use Like checkbox and Next);
Relaxing MusicBolero for LoversRomantic GuitarVienna Hallstatt
NOTE: This is just demo file.
So it allways loads only the file objpage-herald-winkler.js
To start: Choose a file (objpage- ...js) then tap button LOAD JS




 


B1- PLAY SINGLE VIDEOS




B2- PLAY PLAYLISTS


B3- FOR MAKING objselect-....js FILE

Remember this file name: 




B4- VIEW THE CONTAIN OF WORKING JAVASCRIPT FILES

The file objpage-harald-winkler.js


The contain of the file objselect-harald-winkler.js
at loading, before updating.
If you see objselect = [], it means the file objselect ... .js doesn't exist.


The contain of the file objpage-all.js at loading


B5- VIEW TWO JSON PAGES FROM
The page before the last


The last page



Popular posts from this blog

PHP JQUERY PROXY DEMO

DOWNLOAD pixab-15.html