Javascript 使超链接可选

Javascript 使超链接可选,javascript,html,css,Javascript,Html,Css,如果您使用Firefox或Chrome浏览网页,您可以通过按住右alt键选择超链接中的文本,超链接是带有标记的元素 在我的应用程序中,我希望使用javascript实现这一点,不是通过按住某个按钮,而是默认情况下。如果用户双击,我将重定向到url,否则用户将能够像选择纯文本一样选择内容 我尝试的第一件事是用元素替换所有元素,并实现相关事件。这提供了我想要的功能,但即使在我保持所有属性(类、id)不变的情况下,也会严重扭曲外观。对于我正在处理的页面,似乎有标签特定的css 现在我试图通过保持标记名

如果您使用Firefox或Chrome浏览网页,您可以通过按住右alt键选择超链接中的文本,超链接是带有
标记的元素

在我的应用程序中,我希望使用javascript实现这一点,不是通过按住某个按钮,而是默认情况下。如果用户双击,我将重定向到url,否则用户将能够像选择纯文本一样选择内容

我尝试的第一件事是用
元素替换所有
元素,并实现相关事件。这提供了我想要的功能,但即使在我保持所有属性(类、id)不变的情况下,也会严重扭曲外观。对于我正在处理的页面,似乎有标签
特定的css

现在我试图通过保持标记名来实现这一点。我目前的代码如下:

var linkElems = document.getElementsByTagName('a');

for (var i = linkElems.length - 1; i >= 0; i--) {
    linkElems[i].ondblclick = function () {
           //redirect to url
        };

    linkElems[i].setAttribute("href", "#");
    linkElems[i].onclick = function () { return false; };       
}
在这段代码之后,链接不会使页面重定向到相应的url,但当我尝试选择文本时,它只是拖动一些包含url的框。为了防止这种情况发生,我编写了以下代码:

document.body.ondragstart = function(){return false;}
现在,我阻止了拖动,但仍然无法选择文本。我想知道有没有办法解决这个问题。

看看这个

我使用了数据属性,但没有定义
href
属性

您可以在上找到有关
data-*
属性的更多信息

$(函数(){
$(“.aLink”).dblclick(函数(){
var link=$(this.attr(“data href”);
window.location.href=链接;
});
});
a{
颜色:蓝色;
文字装饰:下划线;
}



请参见此

我使用了数据属性,但没有定义
href
属性

您可以在上找到有关
data-*
属性的更多信息

$(函数(){
$(“.aLink”).dblclick(函数(){
var link=$(this.attr(“data href”);
window.location.href=链接;
});
});
a{
颜色:蓝色;
文字装饰:下划线;
}




我认为第一个想法很好,然后你只需查看CSS设置了哪些属性,并在span链接上设置它们。@rakwaht我认为这不是一个好主意,因为我不创建这些文件,也不想修改它们。另外,有时有些库像bootstrap,你不想更改它们。我认为第一个想法是好的,然后你只需查看CSS设置的属性,并在你的span链接上设置它们。@rakwaht我认为这不是个好主意,因为我不创建这些文件,也不想修改它们。另外,有时有些库像bootstrap,你不想更改它们。但是你没有指针元素了,这有点干扰用户…可以添加CSS属性
cursor:pointer
。只是如果是指针,用户可能会觉得他们无法选择它。实际上,我在实现双击时没有遇到任何问题,并使用自定义数据href属性来保留url,就像您的示例中一样。问题是,我并没有删除href属性,而是将其设置为“#”。谢谢你指出这一点。但是你不再有指针元素了,这有点干扰用户…可以添加CSS属性
cursor:pointer
。只是如果是指针,用户可能会觉得他们无法选择它。实际上,我在实现双击时没有遇到任何问题,并使用自定义数据href属性来保留url,就像您的示例中一样。问题是,我并没有删除href属性,而是将其设置为“#”。谢谢你指出这一点。