Muh*_*uhd 44 javascript jquery google-chrome bookmarklet
注意:我在我的问题中保留了最新版本的书签,效果很好,并且基于雅各布的答案.如果您正在寻找要使用的书签,请使用该书签.如果您只想要一些适用于Chrome的精彩内容,请参阅leosok的精彩答案.
我希望能够使用JavaScript书签反转页面上所有元素的颜色.我知道要反转颜色,你从255(xFF)中减去每个RGB十六进制值,但除此之外,我不确定如何继续.
我怎么能做到这一点?
使用jQuery是可以接受的,它只需要在Chrome上运行,但如果它在Firefox中有效则可以.
这是排除图像 - 背景,文本和链接颜色都应该被反转.基本上任何从CSS中获取颜色的东西.
更新 这是一个更新的书签,修复了嵌套元素问题,并将在很多不同的网站上工作(包括这个)
UPDATE2 添加了对透明度的一些支持,处理具有默认背景颜色rgba(0,0,0,0)的元素.现在更多的网站应该使用更新的网站.
javascript: (function ($) {
function load_script(src, callback) {
var s = document.createElement('script');
s.src = src;
s.onload = callback;
document.getElementsByTagName('head')[0].appendChild(s);
}
function invertElement() {
var colorProperties = ['color', 'background-color'];
var color = null;
for (var prop in colorProperties) {
prop = colorProperties[prop];
if (!$(this).css(prop)) continue;
if ($(this).data(prop) != $(this).css(prop)) continue;
if (($(this).css(prop) === 'rgba(0, 0, 0, 0)') || ($(this).css(prop) === 'transparent')) {
if ($(this).is('body')) {
$(this).css(prop, 'black');
continue;
} else {
continue;
}
}
color = new RGBColor($(this).css(prop));
if (color.ok) {
$(this).css(prop, 'rgb(' + (255 - color.r) + ',' + (255 - color.g) + ',' + (255 - color.b) + ')');
}
color = null;
}
}
function setColorData() {
var colorProperties = ['color', 'background-color'];
for (var prop in colorProperties) {
prop = colorProperties[prop];
$(this).data(prop, $(this).css(prop));
}
}
function invertColors() {
$(document).live('DOMNodeInserted', function(e) {
var $toInvert = $(e.target).find('*').andSelf();
$toInvert.each(setColorData);
$toInvert.each(invertElement);
});
$('*').each(setColorData);
$('*').each(invertElement);
$('iframe').each(function () {
$(this).contents().find('*').each(setColorData);
$(this).contents().find('*').each(invertElement);
});
}
load_script('http://www.phpied.com/files/rgbcolor/rgbcolor.js', function () {
if (!window.jQuery) load_script('https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js', invertColors);
else invertColors();
});
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
现在适用于我尝试过的大多数网站.然而,背景图像可能造成问题.
Jac*_*kin 71
首先,在这里抓住很棒的RGBColor课程.
//set up color properties to iterate through
var colorProperties = ['color', 'background-color'];
//iterate through every element in reverse order...
$("*").get().reverse().each(function() {
var color = null;
for (var prop in colorProperties) {
prop = colorProperties[prop];
//if we can't find this property or it's null, continue
if (!$(this).css(prop)) continue;
//create RGBColor object
color = new RGBColor($(this).css(prop));
if (color.ok) {
//good to go, let's build up this RGB baby!
//subtract each color component from 255
$(this).css(prop, 'rgb(' + (255 - color.r) + ', ' + (255 - color.g) + ', ' + (255 - color.b) + ')');
}
color = null; //some cleanup
}
});
Run Code Online (Sandbox Code Playgroud)
截图:

编辑:这是一个书签,您现在可以复制粘贴到您的浏览器(http://jsfiddle.net/F7HqS/1/)
javascript:function load_script(src,callback){var s=document.createElement('script');s.src=src;s.onload=callback;document.getElementsByTagName('head')[0].appendChild(s);}function invertColors(){var colorProperties=['color','background-color'];$('*').each(function(){var color=null;for(var prop in colorProperties){prop=colorProperties[prop];if(!$(this).css(prop))continue;color=new RGBColor($(this).css(prop));if(color.ok){$(this).css(prop,'rgb('+(255-color.r)+','+(255-color.g)+','+(255-color.b)+')');}color=null;}});}load_script('http://www.phpied.com/files/rgbcolor/rgbcolor.js',function(){if(!window.jQuery)load_script('https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js',invertColors);else invertColors();});
Run Code Online (Sandbox Code Playgroud)
leo*_*sok 37
各位逆变器你好!
我的解决方案似乎现在只适用于chrome,但它会反转所有内容(包括图像和iframe),如下所示:

此外,它不使用外部库,是非常简单的:添加-webkit-filter: invert(100%)到html-selector.
javascript: (
function () {
// the css we are going to inject
var css = 'html {-webkit-filter: invert(100%);' +
'-moz-filter: invert(100%);' +
'-o-filter: invert(100%);' +
'-ms-filter: invert(100%); }',
head = document.getElementsByTagName('head')[0],
style = document.createElement('style');
// a hack, so you can "invert back" clicking the bookmarklet again
if (!window.counter) { window.counter = 1;} else { window.counter ++;
if (window.counter % 2 == 0) { var css ='html {-webkit-filter: invert(0%); -moz-filter: invert(0%); -o-filter: invert(0%); -ms-filter: invert(0%); }'}
};
style.type = 'text/css';
if (style.styleSheet){
style.styleSheet.cssText = css;
} else {
style.appendChild(document.createTextNode(css));
}
//injecting the css to the head
head.appendChild(style);
}());
Run Code Online (Sandbox Code Playgroud)
对我来说,这只适用于镀铬.但它有点像魅力.
这是小提琴:http://jsfiddle.net/nikita_turing/jVKw6/3/ 包括Bookmarklet.如果有人有一个想法如何让它适用于Firefox(SVG-Filters?)继续!
招呼leosok
| 归档时间: |
|
| 查看次数: |
43343 次 |
| 最近记录: |