Tengo esta extensión de Firefox que alguien hizo para mí. Evita que los sitios web abran cuadros de descarga y redirecciones y cosas por el estilo. Funciona muy bien. Evitará que algunos sitios web se abran por completo o funcionen correctamente, pero para mis necesidades funciona muy bien.
¿Se puede convertir esto en un script de Greasemonkey o solo puede funcionar como una extensión?
principal.js
'use strict'; const mimeTypeMatch = function (header) { if (header.name === undefined) { return false; } if (header.name.toLowerCase() != 'content-type') { return false; } if (header.value.startsWith('image')) return false; if (header.value.startsWith('text')) return false; if (header.value.startsWith('font')) return false; if (header.value.startsWith('application/json')) return false; if (header.value.startsWith('application/javascript')) return false; console.log('cancel content type'); console.log(header); return true; }; const headersReceived = function (request) { return new Promise((resolve) => { let filter = false; if ( (['somesite.com']).find( u => { const uri = new URL(request.originUrl); return u === uri.hostname; }) ) { resolve({}); return; } request.responseHeaders.forEach(h => { if (mimeTypeMatch(h)) { filter = true; return; } if (h.name.toLowerCase() === 'content-disposition') { filter = true; return; } }); if (filter) { resolve({ cancel:true }); return; } resolve(); }); }; browser.webRequest.onHeadersReceived.addListener( headersReceived, { urls: ['<all_urls>'] }, [ 'blocking', 'responseHeaders' ] );manifiesto.json
{ "manifest_version": 2, "name": "mime-type-cancel", "version": "1.0", "permissions": [ "webRequest", "webRequestBlocking", "<all_urls>" ], "background": { "scripts": [ "main.js" ] } }Gracias
La respuesta rápida es no.
Los scripts de usuario se ejecutan en el contexto de la page y no tienen acceso a los encabezados (por ejemplo, request.responseHeaders ) que ocurren antes de que una página comience a cargarse.