你需要先安装一款用户样式管理器扩展(如 Stylus)后才能安装此样式。
你需要先安装一款用户样式管理器扩展(如 Stylus)后才能安装此样式。
你需要先安装一款用户样式管理器扩展(如 Stylus)后才能安装此样式。
你需要先安装一款用户样式管理器扩展后才能安装此样式。
你需要先安装一款用户样式管理器扩展后才能安装此样式。
你需要先安装一款用户样式管理器扩展后才能安装此样式。
(我已安装用户样式管理器,立即安装用户样式!)
// ==UserScript==
// @name NicerKongregate
// @namespace http://www.brainassassin.com/
// @description Makes Kongregate a nicer place (removes a few ads and re-arranges stuff).
// @include http://www.kongregate.com/
// @include http://www.kongregate.com/game*
// @include http://www.kongregate.com/forums*
// @include http://www.kongregate.com/badges*
// @include http://www.kongregate.com/*-games*
// @include http://www.kongregate.com/collabs*
// @include http://www.kongregate.com/games/*/*
// @include http://www.kongregate.com/accounts/*
// @include http://www.kongregate.com/my_favorites*
// @include http://www.kongregate.com/badge_quests/*
// @include http://www.kongregate.com/announcements*
// @include http://www.kongregate.com/accounts/leaders*
// @include http://www.kongregate.com/accounts/*/fans*
// @include http://www.kongregate.com/accounts/*/friends*
// @include http://www.kongregate.com/accounts/*/rewards*
// @include http://www.kongregate.com/accounts/*/favorites
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// @version 1.1.1
// ==/UserScript==
var badgeCache = {};
var sPrefix = "Kongregate.com | ";
var css = "#category .category_badges_listing {background-color:#CCCCCC;} \
#category .badge_row {background-color:#FFD8D8;} \
#category .badge_completed {background-color:#E8FFD8;} \
DIV.adcontainer {display:none;} \
#category .badges_set1 {width:auto;} \
#category .badges_set1 .badge_row {float:left;} \
#category .category_listing_header {min-height:29px; padding:0 6px;} \
#category .category_listing_header h1 {padding:4px 0 0 1px; margin:0;} \
#filter_by {width:100px !important;} \
#sort_order {width:140px !important;} \
#category .category_listing_header select {height:17px;} \
#feature .homepageads, .horizontal_ad, .adspacer, #primarywrap div[id$='-ad-slot'], .adcontainer {display:none !important;} \
.badge_difficulty {-moz-border-radius:8px 8px 8px 8px; float:right; height:13px; left:31px; position:absolute; top:31px; width:13px;} \
.badge_EASY, .badge_MEDI, .badge_HARD, .badge_IMPO {-moz-border-radius:8px 8px 8px 8px; float:right; height:13px; left:31px; position:absolute; top:31px; width:13px; background:none no-repeat scroll 0 0 #990000;} \
.badge_EASY {background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNUmK/OAAAAA8SURBVChTY5zJwPCfgVQA0kQqZkDW8B8PQFaHVRMhmwdYE7rX0J07wM4jK/SwRRfOeCJkA0weJSCI1QQAHchGyXwV0W0AAAAASUVORK5CYII=');} \
.badge_MEDI {background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNUmK/OAAAABtSURBVChTY5zJwPCfgVQA0kQqZkDW8B8K9kREgA06mJoKE0IxGKumq9OngxWBaBhANhyrJpDCpXJycA0gBkFNx4uL/8Mw0TZtdnICq93u60u881aoqYEVr9bXJ14TthAl6CfaayI2ZaDEE7GaAMP4ZCfVTVDwAAAAAElFTkSuQmCC');} \
.badge_HARD {background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNUmK/OAAAAAySURBVChTY5zJwPCfgVQA0kQqZkDW8B8KCIkNRU0wvyHTyP4cin4iKZ6ITRkoAUGsJgBsoFeFJkDXCAAAAABJRU5ErkJggg==');} \
.badge_IMPO {background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNUmK/OAAAAA2SURBVChTY5zJwPCfgVQA0kQqZkDX8B8HQFaHoQkmCdOLzRWjmqDRQ52AoCie8KUSnM7DpwkAE6s4cbWZc84AAAAASUVORK5CYII=');} \
.badgeInfo {position:absolute; border:thin solid black; width:91px; height:13px; background-color:red; color:#ffffff; font:0.9em 'Lucida Grande',Verdana,Arial,Sans-serif;} \
.notBadginated, .badginated {border:1px solid #000000; height:13px; left:0; position:relative; top:0; width:13px;} \
.badginated {background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwQAADsEBuJFr7QAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNtCDrVoAAABOSURBVChTY1SrZ/jPQCoAaSIVM5CqAewymCavKdr/8YG5R3vhLsKqCWQAzLCEha5ws2Bi1NOE7kxkp+H008A5D+RcrKFHSnxRFrmk2AQAm4Bgs3hq5XkAAAAASUVORK5CYII=') no-repeat scroll 0 0 #267F00;} \
.notBadginated {background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNtCDrVoAAABOSURBVChTY5zJwPCfgVQA0kQqZiBVA9hlME2rtLX/4wMXe3vhLsKqCWQAzLAtrq5ws2Bi1NOE7kxkp+H008A5D+RcrKFHSnxRFrmk2AQAPXxbUD16cWwAAAAASUVORK5CYII=') no-repeat scroll 0 0 #990000;}";
String.prototype.trim = function(){
var str = this.replace(/^\s\s*/, ''), ws = /\s/, i = str.length;
while (ws.test(str.charAt(--i)));
return str.slice(0, i + 1);
};
String.prototype.capitalize = function(){
return this.replace(/(^|\s)([a-z])/g, function(m,p1,p2) {
return p1+p2.toUpperCase();
});
};
function improveHistory() {
css += "\ntable[class='rewards'] thead tr:first-of-type {background-color:#990000; color:#ffffff; font-variant:small-caps; font-family:verdana,arial,sans-serif;} \
body#report #secondary ul.pagination {margin:0;} \
#report.mypoints #subwrap {padding:15px 0 0 0;} \
#primarywrap {padding:0 0 15px 0;}";
$('#secondary').find('table.rewards tr.summary').insertBefore('table.rewards tr.even:first-of-type');
}
// remove emty URLS (url = "http://")
function improveLeaders() {
css += "\ntable[class='leaders'] thead tr:first-of-type {background-color:#990000; color:#ffffff; font-variant:small-caps; font-family:verdana,arial,sans-serif;} \n" +
"#subwrap {padding:15px 0 0 0;}";
$('table.leaders a[href="http://"]').replaceWith(function() { return this.innerHTML; });
}
// rearrange quick-pick and leaderboards
function improveMain() {
css += "\n#leaderboards .tabset td {padding:3px 0;} \
#leaderboards .freightheader {margin-top:0;} \
#leaderboards {float:left; margin-left:10px;} \
#leaderboards p.challenge_padding {text-align:right;} \
#leaderboards .spritehome {background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJMAAAAWCAYAAADEmK5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNtCDrVoAAAZXSURBVGhD7ZndMWxNFIadRBAA9wTAPQEQAAFwTwISIAACIAACIAECIIT9eXbVO/XM+npvjGNqzpSumpqf3d3rXWu966d7/nTvY+UfHy8vLyurq6tz1eLp6WllY2NjrjLnJWxme0Kmf3Xc3Nx0BwcH3dra2lxUeCdQd3Fx0e3u7nZ7e3tzkTkvIeh2dnbWbW9v9++zjBUW7e/vN1+LarDj4+PuPSt06+vrPZF4/8lxd3fXEwg5kbmotvmqHapu6Hd+fv7Vbfr5PZliIBwT5+S3mXb94UV27DxwXl9fTxEXmQTgMgx0i9/z/i0ysbhGOr/Nuuk8jHxycjIVBD8t8/7+vi8BIe+ykAm7WbdvZyY2pE7OWjYAA/FOT0+7o6Oj/vPV1VX3/Pzc9HHmIzOk5bexwV6kZF7Ud95TdobKXHocZBweHvY60vM8Pj4OiiJSWce4vLzs8SHr7e2tz0aJ3pAJXLe3txNcQxszL/tFb3q+scHz2Id3sAfb0DrWZA4+CP46/+HhYWJP6zZEpvgseNibPWyvvswxmOSe4LORTv/i0mhCEskIzEgEuJz6M3vVgRMiw3LoWfK91YDjOGNxKScL8zwDB7gPgzzYw9ggoMmEfPYwBj5zIKhB5CxqHHzGRjWQ2BeM3tvrcKQHDm3h95oQDF2TYeNvvvs3VyR0id7mh7ERTIwJmYgW187PkIlMVJvSnZ2dqfJDRmDgjJRS1uAMEyL7VMMyp5Ki9niVTBjMxKPHwiDGChaGCRL9WySBYNmDedbFGZLP2CUjNsqaHHaMD5uZ2NkPGegfm/r3zG85OoFkfZPV7eMhcphMCSrmgif43Rax9xSZkpki7DNkskGzIesgUC1BpOiQgOevr6996YA8ZjnzMmrj67LAZ5PKeC0fvZDDKxiyDsyJVDsXvVIakz1qhELQRDuRSWRnjxCVrGyMthHZxTKTwclsWQNe7MTL2HmeoHOmyX6bm5t9SY8dwAZ+H1wgqTMoz7LeZHIQ4g/sCB7wB2fmz1zm0rO0yGc2J2ukdKAkBoiRMIqJZ0Vyh8QeKOvhnqlmJkcf80JcPtuBeYZR/fvQwcOGrQ141RlyOIAqRtsP/RNE6avYD9uYTBV77GH8zGnhd9AiD2J4OMP5nglCRi6kTA/W6oenyGQn1Mzkho1n1Ri1FwiASgKUIvXXe5sQyoZIieNZdd4YmUzOmtb9HYMk0pwdnUFsB+Op90zO7Mhv9V3VpmMEJuA4zPgEWcuW97POLfxkT7cLdY7LvX2Av1zSbCewufdsZiaE1rG1tTUBYzIFIA0gIHxCqycJ91jMz8nDDh5KsUNkamVGG511LVwYIRmL94+cUfurjzJTyGQHVpv6WfROOU2Pgs3YyyUfnSsZxogSfw1ltuhWy1bwUs7Bh86tXjFZ9X+ZKUYdKikxYj2ap2QkLadPSTpMU4xCRJzn2fk1MznFVkyOklaUJuUn+4Q8fAdXxRBiDmWmepqzzFZp94mQvV0acFDkJZOxnwPOhP8os4xlrRr8zHVG4bkPOvZBGncylH1qfcOJnkwscNMa5ie6hi7rzFLKlu+AAMuerGX46gHgcXCt5RgzRid72UhEQJ7x2c5AoTSl7rVoRolqyjTPUz7AjkNzf2VicpRv3ef49OnMxB4+WiOf4QByX8QzN9SxkZ3K/LHDA3sjN/dczkwt/OjjOfgr9uJZGnDskAMIeNyYOwDrgYq5PZnslNpv+HvtXWqfYLBxjhtLp9nM9bE3z+OoSjRjqXclrK1Zs8qLTH6Pw+tBwuStZclXA55nOTjCl6L16I6+vkNiH59Sfafm8p8es/ZZtUKM4c9JsfoYPPUfEOaQDZ2xHHDeI/gH/5szwayU71CScZyhIpDffMxnbrJf9sPQvpQMQKdgjqAxvteZBOxTb4dbR+bs7+xXG3kbqZIphs2Jq5ICoviSlvXo17pPQxcIkgu/yHKWi75kGkauH5I9CLaK32Sr+FtYcoHra4T0s6ynJRkiEWt9gTrpmargr37PXwqpsUPrY4B6OZl1rSOn/0rxOpw69JdN5PsUioyP5o/pjWzLr3/xjK0lW0VH3sf+0mGf1l80lvdV/3i+bRJ7gKkGgtfEb9ahYvhrZPqOcr9rl8MCv2RaDj8uhBa/ZFoINywHiF8yLYcfF0KLXzIthBuWA8R/z9/8dik6lGcAAAAASUVORK5CYII=');} \
#home #leaderboards h2 a {background-position:0 0; margin-bottom:7px;} \
#quick-pick-container {margin-bottom:18px; margin-left:10px; width:281px;} \
dl.tabset dt.dormant a {height:25px;} \
dl.tabset dt.active a {height:27px;}";
$("#primarywrap").removeAttr("style");
$('#quick-pick-container').insertAfter($('#featuredgame'));
$('#leaderboards').insertAfter($('#quick-pick-container'));
checkForBadges('#secondary');
$('#update-button').find('a.spritehome.spriteall').bind('click', function() {
var t = setTimeout(expandLink, 1300);
});
}
function expandLink() {
var $url = $('#random_game').find('a:first');
if ($url.length) {
if ($url.text().trim().indexOf("...") > -1) {
var linkText = $url.get(0).pathname;
linkText = linkText.substring(linkText.lastIndexOf("/") + 1).replace(/\-/g, " ");
$url.text(linkText.capitalize());
}
}
};
// remove "Play:" from game title
// remove "Scores" from floating_game_holder header
// remove background from #primarywrap
function improveGames() {
var $header = $('#gamepage_header h1');
css += "\n#gamepage_header {height:60px;} \
body#play #gamepage_header {height:40px;} \
body#play #gamepage_header h1 {width:auto; height:25px;} \
#gamepage_header .game_title {display:block;font-size:1.5em;font-weight:bold;}";
if ($header.length) {
$header.find('.game_title').insertBefore($header);
$header.remove();
$('#quicklinks').find('li.scores').remove();
checkForBadges('#recommendedgames');
}
$('#primarywrap').css('background', 'none');
}
// add icons displaying difficulty to the badge icons
// preserve sort order & filter
function improveBadges() {
$('.badge_border', '#feature div.category_badges_listing').each(function() {
var badge = getBadgeIcon($(this).parents('.badge_row').attr('title'));
$('<div class="' + badge + '"></div>').appendTo($(this));
});
$('#browser_sidebar ul>li>a').click(function () {
var filter = $('#filter_by option:selected').attr('value'), sortOrder = $('#sort_order option:selected').attr('value');
// preserve sort order
this.href += ((this.search!=""?"&":"?") + "sort=" + sortOrder);
if (filter != "all") {
// preserve filter
if ($(this).parents('.browser_gamegroups').length == 0) this.href += "&filter_by=" + filter;
}
});
}
// add icons displaying difficulty to the badge icons on the profile page
function improveProfileBadges() {
$('span.complete', '#achievements > .badge_list .badge_border').each(function() {
var moText = $(this).attr("onMouseover").toString();
var pattern = /(userbadges-[0-9]+_details)/;
if (moText.match(pattern)) {
var badge = getBadgeIcon($('#' + RegExp.$1 + ' .bd > .badge_name').text());
$('<div class="' + badge + '"></div>').prependTo(this.parentNode);
}
});
}
function getBadgeIcon(elmText) {
var badge = "";
if (elmText.search(/easy/i) > -1)
badge = "badge_EASY";
else if (elmText.search(/medium/i) > -1)
badge = "badge_MEDI";
else if (elmText.search(/hard/i) > -1)
badge = "badge_HARD";
else if (elmText.search(/impossible/i) > -1)
badge = "badge_IMPO";
return badge;
}
function setDocTitle(sTitle) {
var sNewTitle = sPrefix, tmp;
if (sTitle == "/")
sNewTitle = sNewTitle.substring(0, 14);
else if (sTitle.indexOf("/badges") > -1) {
tmp = $('#browser_sidebar ul li.active a.browser_sprite').text();
if (tmp == $('#browser_sidebar ul li:first a.browser_sprite').text())
sNewTitle += tmp;
else
sNewTitle += tmp + " Badges";
} else if (sTitle.indexOf("/card_album") > -1)
sNewTitle += "Card Album";
else if (sTitle.indexOf("/current_challenges") > -1)
sNewTitle += "Current Challenges";
else if (sTitle.indexOf("/games/") > -1)
sNewTitle += $('#gamepage_header .game_title').text();
else if (sTitle.indexOf("/games") > -1 || sTitle.indexOf("-games") > -1 || sTitle.indexOf("/my_favorites") > -1 || sTitle.indexOf("/game_groups/") > -1)
sNewTitle += $('#browser_sidebar ul li.active a.browser_sprite').text();
else if (sTitle.indexOf("/forums") > -1)
sNewTitle += "Forums";
else if (sTitle.indexOf("/accounts/") > -1) {
if (sTitle.indexOf("/friends") > -1)
sNewTitle += "My Friends";
else if (sTitle.indexOf("/fans") > -1)
sNewTitle += "My Fans";
else if (sTitle.indexOf("/rewards") > -1)
sNewTitle += "My Points";
else if (sTitle.indexOf("/leaders") > -1)
sNewTitle += "Point Leaders";
} else if (sTitle.indexOf("/collabs") > -1)
sNewTitle += "Art & Sound";
document.title = sNewTitle;
}
function prepSite() {
var path = location.pathname.toLowerCase().trim();
if (path == "/")
improveMain();
else if (path == "/accounts/leaders")
improveLeaders();
else if (path.indexOf("/accounts/") > -1 && path.indexOf("/rewards") > -1)
improveHistory();
else if (path.indexOf("/accounts/") > -1 && path.indexOf("/favorites") > -1)
checkForBadges('#feature');
else if (path.indexOf("/accounts/") > -1)
improveProfileBadges();
else if (path.indexOf("/badge") > -1)
improveBadges();
else if (path.indexOf("/games/") > -1)
improveGames();
else {
if (path.indexOf("games") > -1 || path.indexOf("my_favorites") > -1 || path.indexOf("/game_groups/") > -1) {
checkForBadges('#feature');
}
}
setDocTitle(location.pathname.toLowerCase());
}
// assign mouseover functions
function checkForBadges(context) {
var $games = $(context).find('div.game.media');
if ($games.length) $games.bind('mouseover', hasBadges);
}
// check whether a game has badges or not
function hasBadges() {
var $me = $(this), URI = $me.find('a:first').get(0);
if (badgeCache[URI]) return;
badgeCache[URI] = 1;
var $badgeInfo = $('<div class="badgeInfo"></div>').text('checking badges...').appendTo($me.find('dl.thumb dt'));
GM_xmlhttpRequest({
method: 'GET',
url: URI,
onload: function(responseDetails) {
if (responseDetails.readyState == 4 && responseDetails.status == 200) {
var pattern = /achievements_tab/;
var hasAchievements = pattern.test(responseDetails.responseText);
$badgeInfo.removeClass('badgeInfo').addClass(hasAchievements ? 'badginated' : 'notBadginated').text("");
}
}
});
}
function addNewStyle(myStyle) {
if (typeof GM_addStyle != "undefined") {
GM_addStyle(myStyle);
} else if (typeof addStyle != "undefined") {
addStyle(myStyle);
} else {
var heads = document.getElementsByTagName("head");
if (heads.length > 0) {
var node = document.createElement("style");
node.type = "text/css";
node.appendChild(document.createTextNode(myStyle));
heads[0].appendChild(node);
}
}
}
if (unsafeWindow.top == unsafeWindow.self) {
prepSite();
addNewStyle(css);
}