Encuentra enlaces .swf e inyecta embed para reproducir con Ruffle
当前为
// ==UserScript==
// @name Reproducir SWF en Forocoches
// @namespace http://tampermonkey.net/
// @version 0.6
// @description Encuentra enlaces .swf e inyecta embed para reproducir con Ruffle
// @author Satoshi++
// @match https://forocoches.com/*
// @grant GM_log
// ==/UserScript==
(function() {
'use strict';
// Inyectar el script de Ruffle
var ruffleScript = document.createElement('script');
ruffleScript.src = 'https://unpkg.com/@ruffle-rs/ruffle';
document.head.appendChild(ruffleScript);
// Función para eliminar enlaces específicos
function eliminarEnlacesEspecificos() {
var enlaces = document.querySelectorAll('a[href="https://forocoches.com/foro/showthread.php?p=476415828"]');
enlaces.forEach(function(enlace) {
GM_log('Eliminando enlace: ' + enlace.href);
enlace.remove();
});
}
// Función para embeber el SWF
function embeberSwf(enlace) {
GM_log('Embeber: ' + enlace.href);
// Crear un contenedor para el embed
var container = document.createElement('div');
container.style.width = '640px';
container.style.height = '480px';
container.style.marginBottom = '20px';
// Crear el elemento embed
var embed = document.createElement('embed');
embed.src = enlace.href;
embed.width = '100%';
embed.height = '100%';
// Crear el enlace "Cerrar"
var cerrarEnlace = document.createElement('a');
cerrarEnlace.href = '#';
cerrarEnlace.textContent = 'Cerrar';
cerrarEnlace.style.display = 'block';
cerrarEnlace.style.marginBottom = '10px';
cerrarEnlace.addEventListener('click', function(event) {
event.preventDefault();
container.remove();
enlace.style.display = 'block'; // Mostrar el enlace .swf nuevamente
});
// Añadir el embed y el enlace "Cerrar" al contenedor
container.appendChild(cerrarEnlace);
container.appendChild(embed);
// Insertar el contenedor después del enlace
enlace.parentNode.insertBefore(container, enlace.nextSibling);
// Ocultar el enlace original
enlace.style.display = 'none';
}
// Función principal para encontrar los enlaces .swf
function encontrarYTransformarEnlacesSwf() {
// Encuentra todos los enlaces en la página
var enlaces = document.getElementsByTagName('a');
var enlacesSwf = [];
for (var i = 0; i < enlaces.length; i++) {
var href = enlaces[i].href;
if (href.endsWith('.swf')) {
enlacesSwf.push(enlaces[i]);
}
}
if (enlacesSwf.length > 0) {
GM_log('Enlaces .swf encontrados:');
enlacesSwf.forEach(function(enlace) {
GM_log(enlace.href);
enlace.addEventListener('click', function(event) {
event.preventDefault();
embeberSwf(enlace);
});
});
} else {
GM_log('No se encontraron enlaces .swf en esta página.');
}
}
// Observador de cambios en el DOM
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (mutation.addedNodes.length > 0) {
GM_log('Cambios detectados en el DOM.');
eliminarEnlacesEspecificos();
encontrarYTransformarEnlacesSwf();
}
});
});
// Configuración del observador
var config = { childList: true, subtree: true };
// Iniciar la observación del documento
observer.observe(document.body, config);
// Asegurarse de que el DOM esté completamente cargado antes de ejecutar la función principal
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', function() {
eliminarEnlacesEspecificos();
encontrarYTransformarEnlacesSwf();
});
} else {
// El DOM ya está cargado
eliminarEnlacesEspecificos();
encontrarYTransformarEnlacesSwf();
}
})();