I looked into this a bit further and realized the reason for the list instead of the table was that I hadn't passed the query string to my local copy. Once I did that, it acted just like the live copy, and I was able to get it to work in IE by adding the <tbody> element (from your youtube2.js file, changes highlighted):
Code:
function listVideos(json,divid) {
//replacing ul-li with tables. difficult to use CSS :)
//$("<table border=0>");
var columns = 3;
var table = document.createElement('table');
table.setAttribute('border','0');
//$("</table>");
divid.innerHTML = '';
if(json.feed.entry){
var tb = document.createElement('tbody');
var tr = document.createElement('tr');
for (var i = 0; i < json.feed.entry.length; i++) {
var entry = json.feed.entry[i];
title = entry.title.$t;
title = title.replace(/\"/g,""");
title = title.replace(/\'/g,"‘");
for (var k = 0; k < entry.link.length; k++) {
if (entry.link[k].rel == 'alternate') {
url = entry.link[k].href;
break;
}
}
var thumb = entry['media$group']['media$thumbnail'][1].url;
var td = document.createElement('td');
if(cleanReturn == 1){
if(inlineVideo == 1){
td.innerHTML = '\n\n<a href="javascript:videoOverlay(\''+getVideoId(url)+'\',\''
+title+'\',\''+url+'\');"><img src="'+thumb+'" class="youtubethumb" alt="'
+entry.title.$t+'" onmouseout="clearTimeout(timer)" onmouseover="mousOverImage(this,\''
+getVideoId(url)+'\',2)"></a>'+'<br />';
var table1 = document.createElement('table');
table.setAttribute('border','0');
var tr1 = document.createElement('tr');
var td1 = document.createElement('td');
tr1.appendChild(td1);
table1.appendChild(tr1);
td.appendChild(table1);
td.innerHTML = td.innerHTML +'<a class="standard" href="javascript:videoOverlay(\''
+getVideoId(url)+'\',\'' + title + '\',\''+ url +'\');">' + title + '</a>\n\n';
tr.appendChild(td);
}else{
td.innerHTML = '<a href="'+url+'"><img src="'+thumb+'" class="youtubethumb" alt="'
+entry.title.$t+'" onmouseout="mouseOutImage(this)" onmouseover="mousOverImage(this,\''
+getVideoId(url)+'\',2)"></a>';
}
}else{
td.innerHTML = entry.content.$t;
}
tr.appendChild(td);
tb.appendChild(tr);
//table.appendChild(tr);
if(i % columns == columns-1) {
var tr = document.createElement('tr');
//var br = document.createElement('br');
//var td = document.createElement('td');
//tr.appendChild(br);
tb.appendChild(tr);
}
/*if (i % columns == columns-1) {
var tr = document.createElement('tr');
var td = document.createElement('td');
var br = document.createElement('br');
//var tr1 = document.createElement('tr');
//var td1 = document.createElement('td');
//var tr2 = document.createElement('tr');
td.appendChild(br);
tr.appendChild(td);
//tr1.appendChild(td1);
table.appendChild(tr);
//table.appendChild(tr1);
//table.appendChild(tr2);
//$("</tr><tr><td><br></td></tr> <tr><td></td></tr> <tr>");
}*/
}
}else{
divid.innerHTML = 'No Results Found';
}
//alert(table.innerHTML);
table.appendChild(tb);
document.getElementById(divid).appendChild(table);
}
This still didn't fix things in Opera. It has an issue with:
Line 1 of linked script http://gdata.youtube.com/feeds/api/playlists/34D188F8C9901AA4?alt=json-in-script&callback=youtubePlayList
Not much we can do about that.
Bookmarks