如何在不触发鼠标点击的情况下,像普通文本一样选择链接?
可以从中间轻松选择未链接的文本。如果用户按住鼠标,我想让链接可选,但如果只需单击一下,就可以正常打开链接。
答案 0 :(得分:5)
此行为由浏览器定义,因此您无法做到这一点。我相信有些浏览器允许你从任何一点(Opera?)中选择锚文本,而不仅仅是开始和结束,但这对你没什么用。
如果您确实想要更改默认浏览器行为(这很少是一个好主意),请继续阅读...
一个可能的解决方案可能是不使用a
元素,而是使用类似span
的内容。为每个span
链接指定一个公共类并存储预期的URL:
<span class="linkSpan" data-link="http://www.example.com">This is a link</span>
然后使用JavaScript(你用jQuery标记了这个问题,所以我将在这里使用jQuery)来重定向用户:
$(".linkSpan").click(function() {
window.location = $(this).data("link");
});
显然,您需要适当地设置.linkSpan
样式,使其看起来更像是一个实际链接。
更新(关注@Madmartigan的评论) - 如果在光标未在链接上方时按住鼠标按钮,然后移动链接本身,您可以从内部的任何一点开始选择文本链接。我至少在Chrome中管理过它。
答案 1 :(得分:2)
如果您要这样做,请不要使用<span>
冒充链接来删除HTML。您使用的是javascript,因此只需使用javascript从链接中删除href
并将其值附加到onclick
事件。
像这样(使用jQuery):
$('a').each(function(){
var href = $(this).attr('href');
$(this).removeAttr('href'); // Now the link is "more selectable"
$(this).click(function(){
top.location = href;
});
});
更容易访问,不会强迫您编写伪造的HTML。链接应使用<a>
标记进行标记。演示:http://jsfiddle.net/phbt4/1/
您必须在这些链接上指定样式,以确保它们看起来像链接而不是依赖于浏览器默认值,因为删除href
属性会产生这种影响。