2017-03-09 120 views
1

如果您使用Firefox或Chrome浏览网页,您可以通过按住右键来选择超链接中的文本,即带有<a>标签的元素。制作超链接

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

我试过的第一件事就是用<span>元素替换所有的<a>元素并实现相关事件。这提供了我想要的功能,但相当严重地扭曲了外观,我保留所有属性(class,id)相同。似乎有标签<a>特定的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一些箱子。为了防止这种情况,我写了下面这行代码:

document.body.ondragstart = function(){return false;} 

现在,我阻止了拖动但仍然无法选择文本。我不知道有没有办法解决这个问题。

+0

data-*属性,我认为第一个想法是好的,那么你就必须寻找到CSS什么属性都设置好的为并将它们设置为您的跨度链接。 – rakwaht

+0

@rakwaht我不认为这是一个好主意,因为我不创建这些文件,我不想修改它们。另外,有时候会有类似bootstrap的库,你不想改变它们。 –

回答

3

看到这个。

我用数据属性并没有定义href属性。

你可以找到更多信息MDN

$(function(){ 
 
    $(".aLink").dblclick(function(){ 
 
    var link = $(this).attr("data-href"); 
 
    window.location.href = link; 
 
    }); 
 
});
a { 
 
    color: blue; 
 
    text-decoration: underline; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<a data-href="https://example.com" class ="aLink">Link 1</a> <br><br> 
 
<a data-href="https://example.com/something" class ="aLink">Likn 2</a>

+0

但你没有指针元素,这是有点令人不安的用户... – mahatmanich

+1

CSS属性可以添加'cursor:pointer'。它只是如果它是指针用户可能会有一种感觉,他们不能选择它。 – vatz88

+0

实际上,我没有任何麻烦实施双击,并使用自定义数据href属性来保持url就像你的例子。问题是,我没有删除href属性,而是将其设置为“#”。感谢您指出了这一点。 –