HTML5 embedded youtube videos

Changes the way of embedding youtube videos from old 'object' to new 'iframe'

  1. // ==UserScript==
  2. // @name HTML5 embedded youtube videos
  3. // @namespace html5
  4. // @description Changes the way of embedding youtube videos from old 'object' to new 'iframe'
  5. // @include *
  6. // @author original script by Mikhail Khvoinitsky in (2010 https://userscripts-mirror.org/scripts/show/82749 updated in 2020 to add https to remove mixed content error.
  7. // @version 0.3
  8. // ==/UserScript==
  9.  
  10.  
  11. var insertLink = 1;
  12.  
  13.  
  14.  
  15. var n = 0;
  16. while (document.getElementsByTagName("object")[n] != undefined)
  17. {
  18. var currentElement = document.getElementsByTagName("object")[n];
  19. if (currentElement.getElementsByTagName("embed")[0] == undefined){
  20. }
  21.  
  22. if (currentElement.getElementsByTagName("embed")[0] != undefined)
  23. {
  24. if ((currentElement.getElementsByTagName("embed")[0].src.indexOf("http://youtube.com/") == 0)
  25. || (currentElement.getElementsByTagName("embed")[0].src.indexOf("http://www.youtube-nocookie.com/") == 0))
  26. {
  27. var newElement = document.createElement('iframe');
  28. newElement.setAttribute('class', 'youtube-player');
  29. newElement.setAttribute('width', currentElement.width);
  30. newElement.setAttribute('height', currentElement.height);
  31. var src = currentElement.getElementsByTagName("embed")[0].src;
  32. newElement.setAttribute('frameborder', '0');
  33. src = src.replace('.com/v/', '.com/embed/');
  34. src = src.replace('http:', 'https:');
  35. src = src.split('&')[0];
  36. newElement.setAttribute('src', src);
  37. currentElement.parentNode.insertBefore(newElement, currentElement);
  38. if (insertLink == 1)
  39. {
  40. var link = document.createElement('a');
  41. link.setAttribute('href', 'https://www.youtube.com/watch?v=' + src.substring(src.lastIndexOf('/') + 1, src.length));
  42. link.innerHTML = 'Watch this video on Youtube';
  43. var br = document.createElement('br');
  44. currentElement.parentNode.insertBefore(br, currentElement);
  45. currentElement.parentNode.insertBefore(link, currentElement);
  46. }
  47. currentElement.parentNode.removeChild(currentElement);
  48. n--;
  49. }
  50. n++;
  51. }
  52. }