JSFiddle - React, Tailwind, and code Playground
by Chris
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Custom Context Menu</title>
<style>
.context-menu {
display: none;
position: absolute;
background-color: white;
border: 1px solid #ccc;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
z-index: 1000;
}
.context-menu ul {
list-style: none;
padding: 0;
margin: 0;
}
.context-menu ul li {
padding: 8px 12px;
cursor: pointer;
}
.context-menu ul li:hover {
background-color: #eee;
}
</style>
</head>
<body>
<div id="contextMenu" class="context-menu">
<ul>
<li id="extractUrl">Extract URL</li>
</ul>
</div>
<script src="context-menu.js"></script>
</body>
</html>
JavaScript
// context-menu.js
document.addEventListener('contextmenu', function (e) {
e.preventDefault();
const contextMenu = document.getElementById('contextMenu');
contextMenu.style.top = `${e.pageY}px`;
contextMenu.style.left = `${e.pageX}px`;
contextMenu.style.display = 'block';
});
document.addEventListener('click', function () {
const contextMenu = document.getElementById('contextMenu');
contextMenu.style.display = 'none';
});
document.getElementById('extractUrl').addEventListener('click', function () {
const selectedText = window.getSelection().toString();
if (selectedText) {
console.log(`Extracted URL: ${selectedText}`);
// You can add your URL extraction logic here
} else {
console.log('No text selected');
}
});