adding to gitea repo

This commit is contained in:
Lucca Pirovano
2026-06-15 14:20:38 -04:00
commit cd7a2bd773
21 changed files with 1994 additions and 0 deletions
@@ -0,0 +1,110 @@
// ==UserScript==
// @name Click "Submit" arrow button on F12
// @namespace vm-click-submit-arrow
// @match https://*netacad.com/*
// @require https://cdn.jsdelivr.net/npm/@violentmonkey/shortcut@1
// @grant none
// @version 1.5
// @run-at document-end
// ==/UserScript==
(function () {
'use strict';
function findSubmitButton() {
// Primary search: light DOM + exact attributes & content
let btns = document.querySelectorAll('button[aria-label="submit"].submit-button');
for (const btn of btns) {
const innerDiv = btn.querySelector('div.submit');
if (innerDiv && innerDiv.textContent.trim() === 'Submit') {
console.log('[SubmitClick] Exact match found in light DOM');
return btn;
}
}
// Deep shadow DOM recursive search
function searchShadows(root) {
const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT);
let node;
while ((node = walker.nextNode())) {
if (node.shadowRoot) {
const shadowBtns = node.shadowRoot.querySelectorAll('button[aria-label="submit"].submit-button');
for (const btn of shadowBtns) {
const innerDiv = btn.querySelector('div.submit');
if (innerDiv && innerDiv.textContent.trim() === 'Submit') {
console.log('[SubmitClick] Found in shadow root of:', node.tagName.toLowerCase());
return btn;
}
}
// Recurse deeper
const found = searchShadows(node.shadowRoot);
if (found) return found;
}
}
return null;
}
const shadowResult = searchShadows(document.body);
if (shadowResult) return shadowResult;
console.log('[SubmitClick] No Submit button detected yet (aria-label + div.submit + text "Submit")');
return null;
}
function triggerClick() {
const btn = findSubmitButton();
if (!btn) {
console.log('[SubmitClick] → Submit button not found yet');
return false;
}
console.log('[SubmitClick] → Found Submit button, clicking it');
// Synthetic click event
try {
const clickEvent = new MouseEvent('click', {
bubbles: true,
cancelable: true,
view: window,
detail: 1
});
btn.dispatchEvent(clickEvent);
} catch (err) {
console.warn('[SubmitClick] dispatchEvent failed', err);
}
// Direct .click() fallback
if (typeof btn.click === 'function') {
try {
btn.click();
} catch (err) {
console.warn('[SubmitClick] .click() failed', err);
}
}
return true;
}
VM.shortcut.register('f12', () => {
setTimeout(() => {
if (!triggerClick()) {
// Extra retry for slow-rendering elements
setTimeout(triggerClick, 400);
}
}, 60);
});
console.log('[SubmitClick] Loaded press F12 to click the Submit button');
// Optional: uncomment for auto-click every ~1.5 seconds until success
/*
const autoInterval = setInterval(() => {
if (triggerClick()) {
clearInterval(autoInterval);
console.log('[SubmitClick] Auto-click successful stopping checks');
}
}, 1500);
*/
})();