Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* My Comfy Javascript been using for months now last updated 4/1/2019
- * q.js v2018.3-6.9
- * Added Blacklist NOPE button.
- * Replaced Q's trip !A6yxsPKia. to !!mG7VJxZNCI
- * Added Toastmaster from https://pastebin.com/eM106zgK
- * Mark previous bread links yellow
- */
- // User Settings
- var anonsw = {
- qflair: '', // Examples: REAL, →
- qcolor: '#ffc',
- youcolor: '#fcc',
- scrollcolor: 'rgba(153, 153, 153, 0.6)',
- scrollbackcolor: '#333',
- scrolltime: 400, // ms
- updateDelay: 200, // ms
- sidenavWidth: 30, // px
- floodEnabled: true,
- floodThreshold: 15, // min # posts before beginning fade
- floodVanish: 25, // max # posts before completed fade/hide
- floodBehavior: 'fade', // hide, fade
- fadenametripregex: /^(Anon(ymous)?-.*|.*-!!mG7VJxZNCI)$/i,
- fadenametripfloodvalue: -1, // Effective post count for fading, or -1 for auto of floodThreshold+post count
- strikeThroughNameFags: true,
- rateHistoryLen: 50, // Data points on chart
- rateAvgLen: 10 // Number of data points to average for instantaneous rate
- // Suggestions from 589388.html#590283
- // ...shill detection features, such as
- // easily knowing the proportion of posts from a user that don't link.
- // I'd want to know any ID that was posting > 1/3 posts targetting noone.
- // TODO: Behavior for post hover should be to show original post visual before all q.js mods
- // TODO: Add flags to turn on/off features
- // TODO: Custom-regex -> post color/fade (auto-filter by selecting text and choosing new menu item?)
- // Examples: daily reminder, guys, check this out, shill, get out, filtered, tell us more, archive everything
- // TODO: Manual shade
- // TODO: remove Q trip codes from post content?
- // TODO: remove Q from end of post content if not a Q post?
- // TODO: recognize all of known Q trip codes? (make to sure to exclude known comps)
- // TODO: Links to reset on current Q/(you) post
- // TODO: Link to go to latest post (end key doesn't always work, but try capturing that as well?)
- // TODO: Keyboard shortcuts for navigation
- // TODO: Current/Total overall post navigation
- // TODO: Remap end key to always go to end of page
- // TODO: Check box for each post to mark as "read", "spam", ?
- // TODO: Autocorrect all-caps posts (50% threshold)?
- // TODO: Correct broken links but remove referral when clicked?
- // TODO: Make flood post fading non-linear to give leniency to posters just passing flood threshold
- // TODO: Penalize reposts in flood detection (if id's different, merge?) ?
- // TODO: Scorecard of posters ordered by post count (post rate, reply count, ...)?
- // TODO: Color/shade posts where there are no references and no question marks
- // TODO: If Q or trip used in name field, strike them out or replace with Anonymous?
- // TODO: embedded posts in Q posts don't have background-color and inherit Q color, fix?
- };
- !function(t,$,n){var e,s,r,h,l=[],o=[],a=-1,c=[],d=-1,f=[],p=[],v=[];function g(t){$("html, body").animate({scrollTop:$(t).offset().top-$("div.boardlist").height()},anonsw.scrolltime)}function u(){return $(c).each(function(){$(this).css("background-color",anonsw.youcolor)}),$.Deferred().resolve()}function w(){return $('div.body:icontains("(You)")').each(function(){$(this).find(":not(small)").contents().filter(function(){return 3==this.nodeType}).each(function(){this.textContent=this.textContent.replace(/\(+ *You *\)+/gi,"you")})}),$.Deferred().resolve()}function y(){return $(o).each(function(t,n){$(n).css("background-color")!==anonsw.qcolor&&(""!==anonsw.qflair&&$(n).find("p.intro > label > span.trip").first().prepend(anonsw.qflair+" "),$(n).css("background-color",anonsw.qcolor))}),$.Deferred().resolve()}function m(){var t,n=-1;for(a>l.length&&(a=l.length),d>c.length&&(d=c.length),i=0;i<l.length;i++){var o=$(l).get(i);if(-1==n&&(n=$(o).css("font-size"),t=Math.floor(1.5*parseInt(n.replace("px","")))),$(o).offset().top+$(o).height()-2.25*t>$(window).scrollTop()){a=i;break}}for(i=0;i<c.length;i++){o=$(c).get(i);if(-1==n&&(n=$(o).css("font-size"),t=Math.floor(1.5*parseInt(n.replace("px","")))),$(o).offset().top+$(o).height()-2.25*t>$(window).scrollTop()){d=i;break}}$(".qcount").text("("+(a+1)+":"+l.length+")"),$(".youcount").text("("+(d+1)+":"+c.length+")")}function b(){var t=$("#sidenav");if(t.length){for($(t).css("height",$(window).height()-$("div.boardlist").height()),h=e.canvas.height/($(window).height()-$("div.boardlist").height()),e.clearRect(0,0,e.canvas.width,e.canvas.height),f=[],e.fillStyle=anonsw.qcolor,i=0;i<l.length;i++){var n=$(l).get(i);(o=$(n).height()/$(document).height()*e.canvas.height)<h&&(o=h),f[i]={x:s,y:$(n).offset().top/$(document).height()*e.canvas.height,width:e.canvas.width-2*s,height:o},e.fillRect(f[i].x,f[i].y,f[i].width,f[i].height)}for(p=[],e.fillStyle=anonsw.youcolor,i=0;i<c.length;i++){var o;n=$(c).get(i);(o=$(n).height()/$(document).height()*e.canvas.height)<h&&(o=h),p[i]={x:s,y:$(n).offset().top/$(document).height()*e.canvas.height,width:e.canvas.width-2*s,height:o},e.fillRect(p[i].x,p[i].y,p[i].width,p[i].height)}if(e.fillStyle=anonsw.scrollcolor,e.fillRect(r/2,$(window).scrollTop()/$(document).height()*e.canvas.height,r,$(window).height()/$(document).height()*e.canvas.height),750<$("#thread_stats_posts").text()){var a=8192/($(window).height()-$("div.boardlist").height());e.fillStyle="#f66",e.fillRect(0,e.canvas.height-a,e.canvas.width,a)}}}function x(){m(),b(),function(){var t=$("div.post").not(".post-hover"),n=t.length-(anonsw.rateHistoryLen+anonsw.rateAvgLen)+1;n<1&&(n=1),$($($(t).get(0)).find(".intro time").get(0)).attr("unixtime"),v=[],timehistory=[];for(var o=n;o<t.length;o++){var a=$($($(t).get(o)).find(".intro time").get(0)).attr("unixtime");if(timehistory[timehistory.length]=a,0<=timehistory.length-anonsw.rateAvgLen-1){var e=timehistory[timehistory.length-1],i=timehistory[timehistory.length-anonsw.rateAvgLen-1];v[v.length]=anonsw.rateAvgLen/((e-i)/60)}else v[v.length]=0}if($(".postRate").text(v[v.length-1].toFixed(1)),v.length>anonsw.rateAvgLen){var s=Math.max.apply(null,v),r=Math.min.apply(null,v);s-.5<r&&(r=s-.5,s+=.5),r<0&&(r=0);var h=timehistory[timehistory.length-1],l=timehistory[anonsw.rateAvgLen];$(".postRateChart").each(function(){var t=$(this).get(0).getContext("2d");t.clearRect(0,0,t.canvas.width,t.canvas.height),t.strokeStyle=$("div.boardlist a").css("color"),t.beginPath();var n=0,o=t.canvas.height-(v[anonsw.rateAvgLen]-r)/(s-r)*t.canvas.height;t.moveTo(n,o);for(var a=anonsw.rateAvgLen+1;a<v.length;a++)n=(timehistory[a]-l)/(h-l)*t.canvas.width,o=t.canvas.height-(v[a]-r)/(s-r)*t.canvas.height,t.lineTo(n,o);t.stroke(),t.closePath()})}}()}function _(){return c=$.map($('div.post:not(.post-hover) > p.intro > label span.name > span.own_post, div.post:not(.post-hover) > div.body > p.body-line > small:icontains("(You)")'),function(t){return $(t).closest("div.post")}),$.Deferred().resolve()}function T(){if(anonsw.floodEnabled){var e={},i=null,t=$("div.post:not(.post-hover)").not(".you");$(t).each(function(){var t,n=$(this).find("p > span.poster_id").first().text();if(null!=i){if(n in e||(e[n]={count:0,namefag:!1,floodcount:0}),e[n].count++,!e[n].namefag){var o=(t=$(this).find("p > label span.name").first()).contents().not(t.children()).text(),a=$(this).find("p > label > span.trip").first().text();e[n].namefag=!anonsw.fadenametripregex.test(o+"-"+a)}e[n].namefag?anonsw.fadenametripfloodvalue<0?e[n].floodcount=anonsw.floodThreshold+e[n].count:e[n].floodcount=anonsw.fadenametripfloodvalue:e[n].floodcount=e[n].count}null==i&&(i=n)}),$.each(e,function(t,n){if(t!==i){var o=$('span.poster_id:contains("'+t+'")');if(n.floodcount>anonsw.floodThreshold||n.namefag)if(anonsw.strikeThroughNameFags&&n.namefag&&$(o).each(function(){$(this).closest("div.post").find("p > label span.name").first().css("text-decoration","line-through")}),"fade"===anonsw.floodBehavior){var a=n.floodcount;a>anonsw.floodVanish&&(a=anonsw.floodVanish),(a=(anonsw.floodVanish-anonsw.floodThreshold-(a-anonsw.floodThreshold))/(anonsw.floodVanish-anonsw.floodThreshold))<.1&&(a=.1),$(o).each(function(){$(this).closest("div.post").css("opacity",a),$(this).closest("div.post").hover(function(){$(this).animate({opacity:1},anonsw.updateDelay)},function(){$(this).animate({opacity:a},anonsw.updateDelay)})})}else"hide"===anonsw.floodBehavior&&n.count>=anonsw.floodVanish&&$(o).each(function(){$(this).closest("div.post").hide()});else $(o).each(function(){$(this).closest("div.post").css("opacity",1)})}})}return $.Deferred().resolve()}function k(){(l=$.map($('div.post:not(.post-hover) > p.intro > label > span.trip:contains("!!mG7VJxZNCI")'),function(t){return $(t).closest("div.post")}),o=$.map($('div.post:not(.post-hover) > p.intro > label > span.trip:contains("!!mG7VJxZNCI")'),function(t){return $(t).closest("div.post")}),$.Deferred().resolve()).done(y).done(w).done(_).done(u).done(T).done(x)}!function($){var e,i=$.fn.on;$.fn.on=function(){var t=Array.apply(null,arguments),n=t[t.length-1];if(isNaN(n)||1===n&&t.pop())return i.apply(this,t);var o=t.pop(),a=t.pop();return t.push(function(){var t=this,n=arguments;clearTimeout(e),e=setTimeout(function(){a.apply(t,n)},o)}),i.apply(this,t)}}(this.jQuery||this.Zepto),$.expr[":"].icontains=jQuery.expr.createPseudo(function(n){return function(t){return 0<=jQuery(t).text().toUpperCase().indexOf(n.toUpperCase())}}),t.nextq=function(){0<l.length&&(a<l.length-1&&a++,g($(l).get(a)))},t.lastq=function(){0<l.length&&(a=l.length-1,g($(l).get(a)))},t.prevq=function(){0<l.length&&(0<a&&a--,g($(l).get(a)))},t.firstq=function(){0<l.length&&(a=0,g($(l).get(a)))},t.nextyou=function(){0<c.length&&(d<c.length-1&&d++,g($(c).get(d)))},t.lastyou=function(){0<c.length&&(d=c.length-1,g($(c).get(d)))},t.prevyou=function(){0<c.length&&(0<d&&d--,g($(c).get(d)))},t.firstyou=function(){0<c.length&&(d=0,g($(c).get(d)))},$(window).on("scroll",function(t){m(),b()},anonsw.updateDelay),$(window).on("resize",function(t){x()},anonsw.updateDelay),t.toggleFlood=function(){anonsw.floodEnabled?(anonsw.floodEnabled=!1,$(".toggleFloodState").text("On"),"fade"===anonsw.floodBehavior?$("span.poster_id").each(function(){$(this).closest("div.post").css("opacity",1),$(this).closest("div.post").off("mouseenter mouseleave")}):"hide"===anonsw.floodBehavior&&$(this).closest("div.post").show()):(anonsw.floodEnabled=!0,$(".toggleFloodState").text("Off"),k())},t.Q=function(){$("div.boardlist").append('<span>[ <a href="javascript:anonsw_main.firstq();"><i class="fa fa-step-backward"></i></a> <a href="javascript:anonsw_main.prevq();"><i class="fa fa-backward"></i></a> <span style="filter:brightness(70%);">Q</span> <span class="qcount">(?:?)</span> <a href="javascript:anonsw_main.nextq();"><i class="fa fa-forward"></i></a> <a href="javascript:anonsw_main.lastq();"><i class="fa fa-step-forward"></i></a> ]</span>'),$("div.boardlist").append('<span>[ <a href="javascript:anonsw_main.firstyou();"><i class="fa fa-step-backward"></i></a> <a href="javascript:anonsw_main.prevyou();"><i class="fa fa-backward"></i></a> <span style="filter:brightness(70%);">(You)</span> <span class="youcount">(?:?)</span> </span><a href="javascript:anonsw_main.nextyou();"><i class="fa fa-forward"></i></a> <a href="javascript:anonsw_main.lastyou();"><i class="fa fa-step-forward"></i></a> ]</span>'),$("div.boardlist").append('<span>[ <a href="javascript:anonsw_main.toggleFlood();">Turn Post Fading <span class="toggleFloodState">Off</span></a> ]</span>'),function(){var n=$("div.boardlist").height()-1;$("div.boardlist").append('<span>[ Post Rate: <span class="postRate">0</span> posts/min <canvas class="postRateChart"></canvas>]</span>'),$(".postRate").css("color",$("div.boardlist a").css("color"));var t=$(".postRateChart");$(t).each(function(){$(this).css("width","100px"),$(this).css("height",n),$(this).css("vertical-align","middle");var t=$(this).get(0).getContext("2d");t.canvas.height=20,t.canvas.width=100})}(),function(){$("body").append('<canvas id="sidenav"></canvas>');var t=$("#sidenav");$(t).css("position","fixed"),$(t).css("top",$("div.boardlist").height()),$(t).css("right",0),$(t).css("width",anonsw.sidenavWidth),$(t).css("height",$(window).height()-$("div.boardlist").height()),$(t).css("background-color",anonsw.scrollbackcolor),$("body").css("margin-right",anonsw.sidenavWidth),(e=$("#sidenav").get(0).getContext("2d")).canvas.height=2048,e.canvas.width=anonsw.sidenavWidth,s=1,r=e.canvas.width/2}(),k();var t=$("div.thread")[0];new MutationObserver(function(t){for(var n in t)if("childList"==t[n].type){k();break}}).observe(t,{childList:!0})}}(window.anonsw_main=window.anonsw_main||{},jQuery),$(document).ready(anonsw_main.Q);
- /*
- * Toastmaster 1.1.0
- * Finds the bread so you don't have to.
- * Also tries to stop you from posting in a locked thread.
- *
- * Always read the code before pasting it.
- */
- /* this is literally just a picture of toast */
- var toast ="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAMAAAC6CgRnAAAARVBMVEWZMwAAAABmMwBmMzNmZjOZZgCZZjOZZmbMZgDMZjPMZmaZmTOZmWbMmTPMmWbMmZn/mWbMzGbMzJn/zGb/zJn/zMz//8zDFCa2AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+IIBAI4ECHmtE4AAAFKSURBVCjPVVIBcsMwCKubQuZb0J2xu/8/dRJJt5ZzcnGEhAy+3V7R3uL2FtrfffN927a7P+7tDYEDuRiZ4II/LrQ5EQwQKVAp8HZCBu6Jrpm5JpiST+ytBGFBovIrB5iDX3RECCKKh+SDSoxEYaYtWVEkhkdgCluBTmIO2kHwr015m6mCqROMkMwsOcjOurwERYbcpBDrgfyBsPpDMVHLiVTYifJ5sEiWKs6FoLtRPo+ijXI4aazzvGEvrHJXnAcgyi9bwiyrm8mKKUCS5IJnaPFfpXrHWt27xyqsV8Fuhu5yadHDIcy+7eKxWVaaqKyz15IHaWFfTjkhvTQpEp1pxmWdc+aL7D/M1F1a57l6KIGwNPuCrOZ5tlVvCsU4edX6+he8E+xY5bWaA0eX6+BgBq/SwfGz/2EahAbLGgd8Z/92v0JD+rjQH/ELBU8elOTZkAQAAAAASUVORK5CYII=";
- function navigate(url) {
- if(typeof url != 'undefined') {
- window.location.href=url;
- }
- }
- function get_bread_number(text) {
- if ( (text.toLowerCase().indexOf('ebake') != -1)
- || (text.toLowerCase().indexOf('q research') != -1)) {
- var rx = /[^0-9]*([0-9]+)[^0-9]*/g;
- var arr = rx.exec(text);
- return arr && arr.length > 1 ? arr[1] : false;
- }
- return false;
- }
- function make_toast(url, time) {
- var response;
- var age = 100 - ((~~((new Date).getTime() / 1000)) - time)/72;
- var x = new XMLHttpRequest();
- x.open('GET', url, true);
- x.onreadystatechange = function() {
- if(x.readyState === 4 && x.status == 200) {
- response = JSON.parse(x.responseText);
- var target = document.getElementById('dythreads');
- var bread = response.posts[0];
- var posts = response.posts.length;
- var txt = bread.sub;
- if (typeof txt == 'undefined') {
- txt = bread.com;
- if (txt.length > 40) {
- txt = txt.substring(0,39) + '...';
- }
- }
- var num = get_bread_number(txt);
- if (false == num) return;
- var thread = document.getElementsByName('thread');
- console.log('thread ' + thread[0].value + ' ' + bread.no)
- if (thread[0].value == bread.no) {
- var pfi = document.getElementById('post-form-inner');
- console.log('ok');
- if (pfi && (posts > 750)) {
- pfi.style.padding='3px';
- pfi.style.border='3px solid red';
- pfi.style.borderRadius='10px';
- pfi.style.opacity='0.7';
- pfi.style.background='url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGklEQVQIW2NkYGD4D8SMQAwGcAY2AbBKDBUAVuYCBQPd34sAAAAASUVORK5CYII=) repeat';
- }
- }
- var opts = document.getElementsByName('toast');
- for(var i = 0; i < opts.length; i++) {
- if (opts[i].getAttribute('no') == bread.no) {
- opts[i].setAttribute('old',false)
- opts[i].setAttribute('title', txt + ' (' + posts + ')' );
- return;
- }
- }
- var img = document.createElement('IMG');
- var opt = document.createElement('SPAN');
- opt.setAttribute('title', txt + ' (' + posts + ')' );
- opt.setAttribute('no',bread.no);
- opt.style.borderRadius='5px';
- opt.style.border='1px solid transparent';
- opt.addEventListener('mouseover',function() {
- opt.style.backgroundColor='rgb(255,255,255,0.4)';
- opt.style.cursor='pointer';
- });
- opt.addEventListener('mouseout',function() {
- opt.style.backgroundColor='transparent';
- opt.style.cursor='auto';
- });
- opt.style.height = '39x';
- opt.style.width = '35px';
- opt.style.verticalAlign='top';
- opt.style.textAlign='center';
- opt.style.display = 'inline-block';
- img.src = toast;
- img.id = "" + bread.no;
- opt.appendChild(img);
- target.appendChild(opt);
- opt.setAttribute('name','toast');
- var label = document.createElement('SPAN');
- label.style.display = 'block';
- label.style.fontWeight = 'bold';
- label.style.fontSize = '11px';
- var node = document.createTextNode(num);
- label.appendChild(node);
- opt.appendChild(label);
- img.style = "filter: saturate(" + age + "%);";
- img.style = "filter: brightness(" + age + "%);";
- opt.onclick = function () {
- var no = bread.no;
- return navigate("/qresearch/res/" + no + ".html");
- };
- opt.setAttribute('old',false);
- }
- };
- x.send();
- }
- // every 60 seconds we reload from threads.json
- function refresh() {
- var opts = document.getElementsByName('toast');
- // prune expired breads and append new ones.
- if (typeof opts != 'undefined') {
- for(var i = 0; i < opts.length; i++) {
- if(opts[i].getAttribute('old') == true) {
- target.removeChild(opts[i]);
- console.log('removed option ' + i)
- }
- else {
- opts[i].setAttribute('old',true);
- }
- console.log(opts[i].getAttribute('old'));
- }
- }
- else {
- console.log('no opts');
- }
- var x = new XMLHttpRequest();
- x.open('GET', "/qresearch/threads.json", true);
- x.onreadystatechange = function() {
- if(x.readyState === 4 && x.status == 200) {
- var response = JSON.parse(x.responseText);
- find_recent_bread(response);
- }
- };
- x.send();
- }
- function find_recent_bread(board) {
- var now = ~~((new Date).getTime() / 1000);
- var thread;
- for(var i = 0; i < board.length; i++) {
- for(var j = 0; j < board[i].threads.length; j++) {
- thread = board[i].threads[j];
- // only show threads modified within the last 2 hours
- if (now - thread.last_modified < 7200) {
- make_toast('/qresearch/res/'+thread.no + '.json',
- thread.last_modified);
- }
- }
- }
- }
- var target = window.top.document.getElementsByName('postcontrols')[0];
- // Post controls is loaded and we're already in a thread
- // append the controls at the top, but only once.
- var dythreads = window.top.document.getElementById('dythreads');
- if (target && ! dythreads) {
- var div = document.createElement('DIV');
- div.id = 'dythreads';
- target.appendChild(div);
- div.style
- = 'z-index:2;'
- + 'top:20px; width:15%; position:fixed; height:1px;'
- + 'right:20px; display:block;';
- setInterval("refresh();", 30000);
- refresh();
- }
- /* Display a replies counter overlay in the bottom right corner */
- $(function(){
- $('head').append('<style>#thread_stats_posts_ovl { '+
- 'position:fixed;bottom:15px;right:35px;'+
- 'font:38px sans-serif;opacity:0.5;color:#f60;}</style>');
- $('body').append('<div id="thread_stats_posts_ovl"/>');
- function copyStats() { $('#thread_stats_posts_ovl').
- text($('#thread_stats_posts').text());}
- $(document).on('new_post',copyStats); copyStats();});
- /* NOPE */
- var imageBlacklist = [] ;
- function loadImageBlacklist() { JSON.parse(localStorage.imageBlacklist || "[]").forEach(addToImageBlacklist); }
- function saveImageBlacklist() { localStorage.imageBlacklist = JSON.stringify(imageBlacklist); }
- function addToImageBlacklist(md5) { if (md5 && -1 === imageBlacklist.indexOf(md5)) imageBlacklist.push(md5); }
- function removeImageFromBlacklist(md5) { var index = imageBlacklist.indexOf(md5); if (-1 !== index) imageBlacklist.splice(index, 1); }
- function blacklistPostImages(post) { $(post).find('img.post-image').each(function (i, el) { var md5 = el.getAttribute('data-md5'); addToImageBlacklist(md5); $(el).addClass('nope'); }); }
- function removeBlacklistedImages() { $('img.post-image').each(function (i, el) { if (-1 !== imageBlacklist.indexOf(el.getAttribute('data-md5'))) { $(el).addClass('nope'); } }); }
- function onNopeClicked(event) { event.preventDefault(); event.stopPropagation(); loadImageBlacklist(); var post = $(event.target).closest('.post'); blacklistPostImages(post); removeBlacklistedImages(); saveImageBlacklist(); }
- function addNopeButtons() { $('.post').each(function(i, post) { if ($(post).find('.nope').length === 0) { $(post).prepend("<input type='button' class='nope' onClick='onNopeClicked(event)' value='Nope'></input>"); } }) }
- setInterval(function () { loadImageBlacklist(); removeBlacklistedImages(); addNopeButtons(); }, 1000);
- $('body').on('click', 'img.nope', function (event) { event.preventDefault(); event.stopPropagation(); $(this).removeClass('nope'); removeImageFromBlacklist(this.getAttribute('data-md5')); saveImageBlacklist(); });
- /* end NOPE */
- /* Mark Previous Bread Links Yellow */
- var postId = window.location.href.match(/\/(\d+)\.html/)[1];
- var style = document.createElement('style');
- style.innerHTML = `
- a[href^="/qresearch/res/"]:not([href^="/qresearch/res/${postId}.html"]) {
- background: #ffb;
- }
- `;
- document.querySelector('head').appendChild(style);
- /* end Mark Previous Bread Links Yellow */
Add Comment
Please, Sign In to add comment