Hier ist eine Methode, die ich mir ausgedacht habe.
Es verwendet ein <span>
anstelle eines <a>
Tags, aber verhält sich wie eine normale Verbindung mit einigen Boni. Wenn Sie den Text rollen, gibt es eine Zeitüberschreitung von 500 Millisekunden, die den Cursor zum Textauswahlcursor ändert. Wenn Sie auf den Text klicken und ihn ziehen, wird keine Klickaktion ausgelöst. Durch Doppelklicken auf den Text (um ganze Wörter auszuwählen) wird jedoch immer noch das Klickereignis ausgelöst. Dies könnte verbessert werden, aber es funktioniert gut und könnte in der Produktion verwendet werden.
Eine weitere Möglichkeit, dies noch besser zu machen, wäre, wenn das Zeitlimit ausgeführt wird, ein kleines Zwischenablagensymbol oben rechts auf der Schaltfläche, auf das sie klicken können, um den Text in ihre Zwischenablage zu kopieren. Wenn Sie die Schaltfläche .mouseout()
der Schaltfläche verwenden, wird dieses Zwischenablagensymbol ausgeblendet.
Eine weitere Funktion könnte außerdem sein, die Textauswahl zu löschen, wenn die Maus die Schaltfläche verlässt. (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/
Ich denke zuerst müssen Sie herausfinden, wie Sie sich das vorstellen. Wie würden Sie zu dem Link gelangen, wenn Sie durch Klicken nicht an einen anderen Ort gelangen würden? Wie würden Sie den Text auswählen, wenn Sie nicht darauf klicken können? –