您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
blacklist users on poe.trade for Firefox
// ==UserScript== // @name poe.trade blacklist for Firefox // @namespace http://porath.org/ // @version 0.17b // @description blacklist users on poe.trade for Firefox // @author arc + Kalos // @match http://poe.trade/search/* // @match http://currency.poe.trade/search* // @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js // @grant GM_setValue // @grant GM_getValue // @grant GM_listValues // @grant GM_deleteValue // ==/UserScript== /* jshint -W097 */ 'use strict'; /* **************************************************************** Notification are broken ATM **************************************************************** // user settings - change the url contents of this variable to any mp3 to change the notification sound, or comment out lines 18-21 if you want the original sound var notification = 'http://porath.org/a/mynotification2.mp3'; $('#live-audio > source').attr('src', notification); $('#live-audio').load(); // replace the notification checkboxes with my own so i can take control of the notifications $('#live-notify-sound').prop('id', 'live-notify-sound-blacklist'); $('#live-notify-sound-blacklist').prop('onclick', null).off('click'); $('#live-notify-browser').prop('id', 'live-notify-browser-blacklist'); $('#live-notify-browser-blacklist').prop('onclick', null).off('click'); $('#live-notification-settings > a').prop('onclick', null).off('click'); var audioNotify = GM_getValue('audioNotify') || false; var browserNotify = GM_getValue('browserNotify') || false; if (audioNotify) { $('#live-notify-sound-blacklist').prop('checked', true); } if (browserNotify) { $('#live-notify-browser-blacklist').prop('checked', true); } $('#live-notification-settings > a').on('click', function () { live_notify_blacklist(); }); $('#live-notify-sound-blacklist').on('click', function () { if ($(this).prop('checked')) { GM_setValue('audioNotify', true); } else { GM_setValue('audioNotify', false); } }); $('#live-notify-browser-blacklist').on('click', function () { if ($(this).prop('checked')) { GM_setValue('browserNotify', true); } else { GM_setValue('browserNotify', false); } }); function live_notify_blacklist() { if ($('#live-notify-sound-blacklist').is(':checked')) { $("#live-audio").trigger("play"); } if ($('#live-notify-browser-blacklist').is(':checked')) { if (!("Notification" in window)) return; Notification.requestPermission(function(result) { if (result === 'denied' || result == 'default') { return; } new Notification("A new item matching your search is available."); }); } } ***********************************/ // add a checkbox to toggle the visibility of blacklisted items var blacklistVisibilityCheckbox = $('<input />').attr('type', 'checkbox').attr('name', 'blacklist-visibility').attr('id', 'blacklist-visibility'); var blacklistVisibilitySpan = $('<span />').addClass('right').css('margin-right', '0.5em').text('Hide BL items: ').append(blacklistVisibilityCheckbox); $('.protip').append(blacklistVisibilitySpan); var blacklistVisibility = GM_getValue('blacklistVisibility') || false; if (blacklistVisibility) { $('#blacklist-visibility').prop('checked', true); } $('#blacklist-visibility').on('click', function () { if ($(this).prop('checked')) { GM_setValue('blacklistVisibility', true); } else { GM_setValue('blacklistVisibility', false); } toggleVisibility(); }); // create an element to show that an item has been hidden var hiddenDiv = $('<div />').addClass('alert-box').css('margin-bottom', '0px').text('Blacklisted item hidden'); var hiddenTd = $('<td />').attr('colspan', '16').append(hiddenDiv); var hiddenTr = $('<tr />').addClass('hidden-row').append(hiddenTd); // add links to each item to blacklist the user var blacklistLink = $('<a />').addClass('blacklistLink').text('Blacklist'); var blacklistLi = $('<li />').append(blacklistLink); var blacklistLabel = $('<span />').addClass('alert').addClass('label').addClass('blacklistLabel').text('blacklisted'); function addBlacklistLink() { if ($('.whisper-btn').length > 0) { $('.whisper-btn').closest('.proplist').each( function () { if ($(this).find('.blacklistLink').length == 0) { $(this).append(blacklistLi.clone()); $(this).closest('.item').append(hiddenTr.clone()); } }); } else { $('.displayoffer-bottom').find('.right').each( function () { if ($(this).find('.blacklistLink').length == 0) { $(this).append(blacklistLink.clone()); $('.blacklistLink').css('margin-left', '5px'); $(this).closest('.item').append(hiddenTr.clone()); } }); } toggleVisibility(); } addBlacklistLink(); // add link to clear the blacklist var blClearLink = $('<a />').addClass('blacklistClearLink').text('Clear'); var blClearSpan = $('<span />').addClass('right').css('margin-right', '0.5em').text('Blacklist: ').append(blClearLink); $('.protip').append(blClearSpan); // if it exists, retrieve the existing blacklist var blacklisted = GM_getValue('blacklisted') || ''; var blacklistArray = []; if (blacklisted.length > 0) { blacklistArray = blacklisted.split(';'); } // listener for clicking the blacklist link - adds seller to blacklist, adds blacklist labels to any items from seller $(document).on('click', '.blacklistLink', function (e) { e.preventDefault(); if ($('.item').length > 0) { var item = $(e.target).closest('.item'); blacklistArray.push(item.data('seller')); } else { var item = $(e.target).closest('.displayoffer'); blacklistArray.push(item.data('username')); } blacklisted = blacklistArray.join(';'); addBlacklistLabel(); GM_setValue('blacklisted', blacklisted); }); // obviously, clicking clear removes all blacklisted sellers from the blacklist $('.blacklistClearLink').on('click', function (e) { e.preventDefault(); clearList(); }); // Test $(document).on('click', '.sortable', function (e) { e.preventDefault(); setTimeout(function(){ addBlacklistLabel(); addBlacklistLink(); toggleVisibility(); var items = $('.item').not('.old'); if (items.length > 0 && items.find('.blacklistLabel').length == 0) { live_notify_blacklist(); } $('.item').not('.old').addClass('old'); },1000); }); // run these functions when the live search updates $(document).on('ajaxSuccess', function () { addBlacklistLabel(); addBlacklistLink(); toggleVisibility(); var items = $('.item').not('.old'); if (items.length > 0 && items.find('.blacklistLabel').length == 0) { live_notify_blacklist(); } $('.item').not('.old').addClass('old'); }); function addBlacklistLabel () { if ($('.whisper-btn').length > 0) { $('.whisper-btn').closest('.proplist').each( function () { var elem = $(this); var item = elem.closest('.item'); if ($.inArray(item.data('seller'), blacklistArray) > -1 && item.find('.blacklistLabel').length < 1) { elem.prepend(blacklistLabel.clone()); item.addClass('blacklisted'); } }); } else { $('.displayoffer-bottom').each( function () { var elem = $(this); var item = elem.closest('.displayoffer'); if ($.inArray(item.data('username'), blacklistArray) > -1 && item.find('.blacklistLabel').length < 1) { elem.prepend(blacklistLabel.clone()); item.addClass('blacklisted'); } }); } toggleVisibility(); } function toggleVisibility () { $('.item > .hidden-row').hide(); if ($('#blacklist-visibility').is(':checked')) { $('.blacklisted > .first-line').hide(); $('.blacklisted > .bottom-row').hide(); $('.blacklisted > .hidden-row').show(); } else { $('.item > .first-line').show(); $('.item > .bottom-row').show(); $('.item > .hidden-row').hide(); } } function clearList () { var keys = GM_listValues(); for (var i=0, key=null; key=keys[i]; i++) { GM_deleteValue(key); } blacklistArray = []; $('.blacklistLabel').remove(); } addBlacklistLabel();