Ecco un metodo che ho trovato.
Utilizza un <span>
anziché un tag <a>
, ma si comporta come un normale collegamento con alcuni bonus. Quando si scorre il testo, c'è un timeout di 500 millisecondi che cambierà il cursore sul cursore di selezione del testo. Cliccando e trascinando il testo non si attiva un'azione di clic, tuttavia facendo doppio clic sul testo (per selezionare parole intere) si attiva comunque l'evento click. Questo potrebbe essere migliorato, ma funziona bene e potrebbe essere utilizzato in produzione.
Un'altra possibilità per rendere questo ancora migliore sarebbe quando si esegue il timeout, mostra anche una piccola icona di appunti in alto a destra del pulsante che possono fare clic per copiare il testo negli appunti. Quando si .mouseout()
del pulsante si nasconderebbe l'icona di Appunti.
Inoltre, un'altra funzione potrebbe essere quella di cancellare la selezione del testo quando il mouse lascia il pulsante. (Clear Text Selection with JavaScript)
HTML
<span data-href="javascript:alert('This is the click action.');" class="link selectable">
<span>[email protected]</span>
</span>
CSS
.link {
font: 16px/0 Tahoma, sans-serif;
padding: 15px 30px;
border: 1px solid #0079be;
border-radius: 4px;
color: #0079be;
cursor: pointer;
}
.link:hover {
color: #fff;
background: #0079be;
}
.link.selectable > span {
display: inline-block;
}
.link.selectable.selecting > span {
cursor: text;
}
JavaScript
$('.link.selectable > span').hover(
function() {
var selectableTimeout = setTimeout(
function(elem) {
$(elem).parent().addClass('selecting');
},
500, this
);
$(this).data('selectableTimeout', selectableTimeout);
},
function() {
clearTimeout($(this).data('selectableTimeout'));
$(this).parent().removeClass('selecting');
}
);
$('.link.selectable').mousedown(
function(e) {
$(this).data('mouseX', e.pageX);
$(this).data('mouseY', e.pageY);
}
);
$('.link.selectable').mouseup(
function(e) {
var mouseX = $(this).data('mouseX');
var mouseY = $(this).data('mouseY');
if (mouseX && mouseY && mouseX === e.pageX && mouseY === e.pageY) {
window.location.href = $(this).attr('data-href');
}
}
);
https://jsfiddle.net/gavin310/6efdyq4h/
Penso che prima tu debba capire come immagini questo lavoro. Come faresti ad accedere al link se cliccandoci sopra non ti portassi da nessuna parte? Come selezioneresti il testo se non puoi cliccarci sopra? –