Embed to HTML5

Replaces media embed tags with HTML5 equivalents

От 30.01.2016. Виж последната версия.

// ==UserScript==
// @name          Embed to HTML5
// @namespace     DoomTay
// @description   Replaces media embed tags with HTML5 equivalents
// @version       1.0.2
// @grant         none

// ==/UserScript==

var embeds = document.embeds;

var audioFiletypes = [".mp3",".wav",".ogg"];
var videoFiletypes = [".mp4"];

for(var e = embeds.length - 1; e >= 0; e--)
{
	if(audioFiletypes.some(elem => embeds[e].src.indexOf(elem) > -1)) var replacement = document.createElement("audio");
	else if(videoFiletypes.some(elem => embeds[e].src.indexOf(elem) > -1)) var replacement = document.createElement("video");
	else continue;
	replacement.src = decodeURIComponent(embeds[e].src);
	replacement.width = embeds[e].width;
	replacement.height = embeds[e].height;
	if(embeds[e].hidden) replacement.style.display = "none";
	replacement.autoplay = parseBool(embeds[e].getAttribute("autostart") || embeds[e].getAttribute("autoplay")) || audioFiletypes.some(elem => window.location.href.indexOf(elem) > -1);
	replacement.controls = parseBool(embeds[e].getAttribute("controller"));
	replacement.loop = parseBool(embeds[e].getAttribute("loop"));
	if(embeds[e].parentNode.nodeName == "OBJECT")
	{
		embeds[e].parentNode.parentNode.insertBefore(replacement,embeds[e].parentNode);
		embeds[e].parentNode.parentNode.removeChild(embeds[e].parentNode);
	}
	else
	{
		embeds[e].parentNode.insertBefore(replacement,embeds[e]);
		embeds[e].parentNode.removeChild(embeds[e]);
	}
}

function parseBool(string)
{
	return string == "true";
}