Skip to content

Instantly share code, notes, and snippets.

@john-walks-slow
Last active November 4, 2023 04:10
Show Gist options
  • Save john-walks-slow/aa6bcda98b5bad4acad613d9f2f90cf0 to your computer and use it in GitHub Desktop.
Save john-walks-slow/aa6bcda98b5bad4acad613d9f2f90cf0 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name Query String Automator
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Automation based on query string. Example: https://www.google.com/?uauto={selector:".RNmpXc",action:"this.click()"}
// @author You
// @match *://*/*?uauto=*
// @run-at document-idle
// @grant none
// ==/UserScript==
(function () {
/** @type {string} A query string. object literal of the automation*/
const queryString = new URLSearchParams(window.location.search);
/**
* @typedef {object} automation
* @prop {string} selector Selector to the target element
* @prop {string=} action If empty, click the target. Otherwise, eval it. ('this' is binded to the target element)
*/
let uauto = eval(`(${queryString.get("uauto")})`);
/**@type {automation[]} */
let automations = uauto?.length ? uauto : [uauto];
for (let { selector, action } of automations) {
let target = document.querySelector(selector);
console.log(target);
if (!target) {
return;
}
if (!action) {
target.click();
} else {
var fn = eval(`(function() {${action}})`);
fn.call(target);
}
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment