Web Injector injects whatever custom JavaScript code you want into every web page. You can write an advanced wrapper for console logging; include utility functions for debugging; hide elements by class or id; or any other creative thing you can think of. I hope you enjoy this extension, and if you have ideas for improvement, please share!
Read more
Source Manifest.json
{"update_url": "https://clients2.google.com/service/update2/crx", "manifest_version": 2, "name": "Web Injector", "short_name": "W{I}, "author": "Trevor Reed", "description": "Inject JavaScript code into every page (e.g. to help with debugging). For example, make your own wrapper for console logging.", "version": "1.0.1", "permissions":[ "storage" ], "icons": { "16": "icon16.png", "48": "icon48.png", "128": "icon128.png" }, "background": { "persistent": false, "scripts": ["jquery.min.js","bg.js"] }, "options_page": "options.html", "content_scripts":[ { "matches": ["*://*/*"], "run_at": "document_end", "js": ["content.js"] } ]}
Ajoe Alex (ID: 0000005a8afcd481)Voted 5 ★ - Updated 01/31/2019excellent.Just What I wanted.
could be better to have a button to start injecting or stop injecting.
Muhammet Ali Petek (ID: 000000095ca3056a)Voted 5 ★ - Updated 10/17/2017Excellent. There are a lot of extensions do injection for domain. But this injects to all pages, every page. Awesome.
Here is my darkener, I just dont want to see white anymore.
function rgb2hsl(rgbArr){
var r1 = rgbArr0 / 255;
var g1 = rgbArr1 / 255;
var b1 = rgbArr2 / 255;
var alpha = rgbArr3 ? rgbArr3 : 1;
var maxColor = Math.max(r1,g1,b1);
var minColor = Math.min(r1,g1,b1);
//Calculate L:
var L = (maxColor + minColor) / 2 ;
var S = 0;
var H = 0;
if(maxColor != minColor){
//Calculate S:
if(L < 0.5){
S = (maxColor - minColor) / (maxColor + minColor);
}else{
S = (maxColor - minColor) / (2.0 - maxColor - minColor);
}
//Calculate H:
if(r1 == maxColor){
H = (g1-b1) / (maxColor - minColor);
}else if(g1 == maxColor){
H = 2.0 + (b1 - r1) / (maxColor - minColor);
}else{
H = 4.0 + (r1 - g1) / (maxColor - minColor);
}
}
L = L * 100;
S = S * 100;
H = H * 60;
if(H<0){
H += 360;
}
var result = H, S, L, alpha;
return result;
}
function hslToRgb(h, s, l, a) {
var r, g, b;
if (s == 0) {
r = g = b = l; // achromatic
} else {
function hue2rgb(p, q, t) {
if (t < 0) t += 1;
if (t > 1) t -= 1;
if (t < 1/6) return p + (q - p) * 6 * t;
if (t < 1/2) return q;
if (t < 2/3) return p + (q - p) * (2/3 - t) * 6;
return p;
}
var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
var p = 2 * l - q;
r = hue2rgb(p, q, h + 1/3);
g = hue2rgb(p, q, h);
b = hue2rgb(p, q, h - 1/3);
}
return r * 255, g * 255, b * 255, a;
}
function hexToRGB(hex, alpha) {
var r, g, b;
if(hex.length < 5){
r = parseInt(hex.slice(1, 2), 16),
g = parseInt(hex.slice(2, 3), 16),
b = parseInt(hex.slice(3, 4), 16);
}else{
r = parseInt(hex.slice(1, 3), 16),
g = parseInt(hex.slice(3, 5), 16),
b = parseInt(hex.slice(5, 7), 16);
}
if (alpha) {
return "rgba(" + r + ", " + g + ", " + b + ", " + alpha + ")";
} else {
return "rgb(" + r + ", " + g + ", " + b + ")";
}
}
function parseRGB(str){
return str.replace(/^\d,/g, '').split(',');
}
function bgcToHSL(bgc, type){
var rgba, hsla;
if(type == 'hex'){
rgba = hexToRGB(bgc,1);
rgba = parseRGB(bgc);
if(rgba.length == 3) rgba.push(1);
}
if(type == 'rgb'){
rgba = parseRGB(bgc);
if(rgba.length == 3) rgba.push(1);
}
if(type == 'hsl'){
hsla = parseRGB(bgc);
if(hsla.length == 3) hsla.push(1);
}
hsla = rgb2hsl(rgba);
hsla.forEach((e,i)=>{hslai = Math.round(e);});
return hsla;
}
function _darkit(e){
if(e.getAttribute('data-darkened')) return;
e.setAttribute('data-darkened', true);
var style = window.getComputedStyle(e);
var bgc = style.getPropertyValue('background-color');
var bgct;
var clr = style.getPropertyValue('color');
var bg = style.getPropertyValue('background-image');
if(bgc == '' || bgc == 'initial' || bgc == 'inherit' || bgc == 'transparent') return
if(bg.indexOf('gradient') !== -1) console.log(bg);
if(bgc.indexOf('rgb') !== -1) bgct = 'rgb';
if(bgc.indexOf('hsl') !== -1) bgct = 'hsl';
if(bgc.indexOf('#') !== -1) bgct = 'hex';
var bgHsl = bgcToHSL(bgc, bgct);
//var newRgb = hslToRgb(bgHsl0, bgHsl1, bgHsl2, bgHsl3);
var lightness = bgHsl2 > 40 ? bgHsl2 - 20 : bgHsl2 / 2;
var newBgc = `hsla(${bgHsl0}, ${bgHsl1}%, ${lightness}%, ${bgHsl3})!important`;
//console.log(newBgc);
// e.style.background = 'none';
var existingStyle = e.getAttribute('style');
e.setAttribute('style', existingStyle + ';background-color:' + newBgc);
//e.style.color = '#ccc';
//e.style.borderColor = '#555';
}
_darkit(document.querySelector('body'));
document.querySelectorAll('body *').forEach(e=>{
_darkit(e);
});
document.addEventListener('DOMNodeInserted', (e)=>{
document.querySelectorAll('body *').forEach(e=>{
_darkit(e);
});
});