adding to gitea repo
This commit is contained in:
@@ -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);
|
||||
*/
|
||||
})();
|
||||
Reference in New Issue
Block a user