User:Stumblean/common.js: Difference between revisions
Appearance
No edit summary Tags: Mobile edit Mobile web edit Advanced mobile edit |
No edit summary Tags: Mobile edit Mobile web edit Advanced mobile edit |
||
Line 8: | Line 8: | ||
top: "20px", | top: "20px", | ||
right: "20px", | right: "20px", | ||
background: "#7889B2", | background: "#7889B2", | ||
color: "#fff", | color: "#fff", | ||
border: "2px solid #666", | border: "2px solid #666", | ||
borderRadius: "10px", | borderRadius: "10px", | ||
Line 34: | Line 34: | ||
title.textContent = "Mahito Menu"; | title.textContent = "Mahito Menu"; | ||
title.style.fontWeight = "bold"; | title.style.fontWeight = "bold"; | ||
title.style.color = "#fff"; | title.style.color = "#fff"; | ||
const img2 = document.createElement("img"); | const img2 = document.createElement("img"); | ||
Line 45: | Line 45: | ||
header.appendChild(img2); | header.appendChild(img2); | ||
const | function makeButton(text, onclick) { | ||
const btn = document.createElement("button"); | |||
btn1 | btn.textContent = text; | ||
btn.onclick = onclick; | |||
Object.assign(btn.style, { | |||
marginBottom: "6px", | |||
width: "100%", | |||
cursor: "pointer", | |||
background: "#45A8C5", | |||
color: "#fff", | |||
border: "none", | |||
padding: "5px 10px", | |||
borderRadius: "5px", | |||
}); | |||
return btn; | |||
} | |||
const btn1 = makeButton("Mass undo", () => { | |||
prompt("Copy this into your common.js:", "mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Alexis_Jazz/Kill-It-With-Fire.js&action=raw&ctype=text/javascript');"); | prompt("Copy this into your common.js:", "mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Alexis_Jazz/Kill-It-With-Fire.js&action=raw&ctype=text/javascript');"); | ||
}; | }); | ||
const btn2 = | const btn2 = makeButton("Open Explanation", () => { | ||
alert("Open Explanation clicked"); | alert("Open Explanation clicked"); | ||
}); | }); | ||
Line 71: | Line 73: | ||
menu.appendChild(btn1); | menu.appendChild(btn1); | ||
menu.appendChild(btn2); | menu.appendChild(btn2); | ||
// === IF on common.js === | |||
const isCommonJS = location.href.includes("title=") && location.href.match(/common\.js/i); | |||
if (isCommonJS) { | |||
const ezBtn = makeButton("EZPASTE", async () => { | |||
try { | |||
const clip = await navigator.clipboard.readText(); | |||
await navigator.clipboard.writeText(clip); | |||
alert("EZPASTE: Clipboard refreshed!"); | |||
} catch (e) { | |||
alert("Clipboard failed: " + e.message); | |||
} | |||
}); | |||
menu.appendChild(ezBtn); | |||
} | |||
document.body.appendChild(menu); | document.body.appendChild(menu); | ||
Revision as of 21:03, 27 June 2025
(function () {
const icon = "https://files.catbox.moe/wk78nl.jpg";
const menu = document.createElement("div");
menu.id = "mahitoMenu";
Object.assign(menu.style, {
position: "fixed",
top: "20px",
right: "20px",
background: "#7889B2",
color: "#fff",
border: "2px solid #666",
borderRadius: "10px",
padding: "10px",
fontFamily: "monospace",
zIndex: "99999",
boxShadow: "0 0 10px black",
touchAction: "none",
});
const header = document.createElement("div");
header.style.display = "flex";
header.style.alignItems = "center";
header.style.gap = "6px";
header.style.marginBottom = "8px";
header.style.cursor = "grab";
const img1 = document.createElement("img");
img1.src = icon;
img1.width = 15;
img1.height = 15;
const title = document.createElement("div");
title.textContent = "Mahito Menu";
title.style.fontWeight = "bold";
title.style.color = "#fff";
const img2 = document.createElement("img");
img2.src = icon;
img2.width = 15;
img2.height = 15;
header.appendChild(img1);
header.appendChild(title);
header.appendChild(img2);
function makeButton(text, onclick) {
const btn = document.createElement("button");
btn.textContent = text;
btn.onclick = onclick;
Object.assign(btn.style, {
marginBottom: "6px",
width: "100%",
cursor: "pointer",
background: "#45A8C5",
color: "#fff",
border: "none",
padding: "5px 10px",
borderRadius: "5px",
});
return btn;
}
const btn1 = makeButton("Mass undo", () => {
prompt("Copy this into your common.js:", "mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Alexis_Jazz/Kill-It-With-Fire.js&action=raw&ctype=text/javascript');");
});
const btn2 = makeButton("Open Explanation", () => {
alert("Open Explanation clicked");
});
menu.appendChild(header);
menu.appendChild(btn1);
menu.appendChild(btn2);
// === IF on common.js ===
const isCommonJS = location.href.includes("title=") && location.href.match(/common\.js/i);
if (isCommonJS) {
const ezBtn = makeButton("EZPASTE", async () => {
try {
const clip = await navigator.clipboard.readText();
await navigator.clipboard.writeText(clip);
alert("EZPASTE: Clipboard refreshed!");
} catch (e) {
alert("Clipboard failed: " + e.message);
}
});
menu.appendChild(ezBtn);
}
document.body.appendChild(menu);
// === DRAGGING ===
let isDragging = false;
let offsetX = 0, offsetY = 0;
function startDrag(x, y) {
isDragging = true;
const rect = menu.getBoundingClientRect();
offsetX = x - rect.left;
offsetY = y - rect.top;
menu.style.left = rect.left + "px";
menu.style.top = rect.top + "px";
menu.style.right = "auto";
}
function doDrag(x, y) {
if (!isDragging) return;
menu.style.left = x - offsetX + "px";
menu.style.top = y - offsetY + "px";
}
function stopDrag() {
isDragging = false;
}
header.addEventListener("mousedown", (e) => {
startDrag(e.clientX, e.clientY);
e.preventDefault();
});
document.addEventListener("mousemove", (e) => {
doDrag(e.clientX, e.clientY);
});
document.addEventListener("mouseup", stopDrag);
header.addEventListener("touchstart", (e) => {
const touch = e.touches[0];
startDrag(touch.clientX, touch.clientY);
e.preventDefault();
});
document.addEventListener("touchmove", (e) => {
if (!isDragging) return;
const touch = e.touches[0];
doDrag(touch.clientX, touch.clientY);
});
document.addEventListener("touchend", stopDrag);
})();