Embed to HTML5

Replaces media embed tags with HTML5 equivalents

当前为 2016-01-30 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Embed to HTML5
  3. // @namespace DoomTay
  4. // @description Replaces media embed tags with HTML5 equivalents
  5. // @version 1.0.2
  6. // @grant none
  7.  
  8. // ==/UserScript==
  9.  
  10. var embeds = document.embeds;
  11.  
  12. var audioFiletypes = [".mp3",".wav",".ogg"];
  13. var videoFiletypes = [".mp4"];
  14.  
  15. for(var e = embeds.length - 1; e >= 0; e--)
  16. {
  17. if(audioFiletypes.some(elem => embeds[e].src.indexOf(elem) > -1)) var replacement = document.createElement("audio");
  18. else if(videoFiletypes.some(elem => embeds[e].src.indexOf(elem) > -1)) var replacement = document.createElement("video");
  19. else continue;
  20. replacement.src = decodeURIComponent(embeds[e].src);
  21. replacement.width = embeds[e].width;
  22. replacement.height = embeds[e].height;
  23. if(embeds[e].hidden) replacement.style.display = "none";
  24. replacement.autoplay = parseBool(embeds[e].getAttribute("autostart") || embeds[e].getAttribute("autoplay")) || audioFiletypes.some(elem => window.location.href.indexOf(elem) > -1);
  25. replacement.controls = parseBool(embeds[e].getAttribute("controller"));
  26. replacement.loop = parseBool(embeds[e].getAttribute("loop"));
  27. if(embeds[e].parentNode.nodeName == "OBJECT")
  28. {
  29. embeds[e].parentNode.parentNode.insertBefore(replacement,embeds[e].parentNode);
  30. embeds[e].parentNode.parentNode.removeChild(embeds[e].parentNode);
  31. }
  32. else
  33. {
  34. embeds[e].parentNode.insertBefore(replacement,embeds[e]);
  35. embeds[e].parentNode.removeChild(embeds[e]);
  36. }
  37. }
  38.  
  39. function parseBool(string)
  40. {
  41. return string == "true";
  42. }