Update "Show CSS Code" box when there are Advanced Style Settings (2017-11-11)
// ==UserScript== // @name Live Advanced Style Settings on userstyles.org // @author Jefferson "jscher2000" Scher // @namespace JeffersonScher // @description Update "Show CSS Code" box when there are Advanced Style Settings (2017-11-11) // @include https://userstyles.org/styles/* // @version 0.6 // @copyright Copyright 2017 Jefferson Scher // @license BSD 3-clause // @grant none // ==/UserScript== function updatestuff(e){ if (e) console.log('Event target='+e.target.nodeName); var ctrls = document.querySelectorAll('#style-settings input[type="text"], #style-settings select'); var namevalue = new Array(); for(var i=0; i<ctrls.length; i++){ switch (ctrls[i].nodeName) { case "INPUT": // Does not work for color choosers, maybe because the value of the text input is changed by a script if (ctrls[i].type == "text") { namevalue.push(ctrls[i].name + "=" + encodeURIComponent(ctrls[i].value)); } break; case "SELECT": namevalue.push(ctrls[i].name + "=" + encodeURIComponent(ctrls[i].value)); break; } } var request = new XMLHttpRequest(); if (request){ var sPage = document.querySelector("meta[property='og:url']").getAttribute("content"); if (!sPage || sPage.length === 0) sPage = 'https://userstyles.org' + location.pathname; var styloc = sPage.substr(0, sPage.lastIndexOf("/")) + ".css?" + namevalue.join("&"); request.open("GET", styloc, true); request.onreadystatechange = function() { if (request.readyState==4) { var tgtEl = document.getElementById("stylish-code"); tgtEl.className = "cssVisible"; if (request.status==200) { tgtEl.value = request.responseText; } else { tgtEl.value += "Unexpected Response Status: " + request.status + " " + request.statusText; } request = null; } } request.send(null); } else { console.log("Can't create XMLHttpRequest!"); } } function prepIt(){ if (document.getElementById('style-settings')){ document.getElementById('advancedsettings_area').className = 'advancedsettings_shown'; updatestuff(); document.getElementById('advancedsettings_area').addEventListener('change', updatestuff, false); } } window.setTimeout(prepIt, 1000); window.setTimeout(prepIt, 2000); // in case there is a very slow load...