获取已经悬停的链接的地址

时间:2018-10-23 23:14:31

标签: javascript jquery tampermonkey

我想为tampermonkey创建一个脚本,以便当我已经通过链接并按Shift时,我会弹出一个带有链接地址的弹出窗口。

我想出了下面的代码,它可以工作,弹出窗口确实打开了,但是它没有显示任何地址,只有一个未定义的错误。

$(document).on('keydown', function ( e ) {
     if (($('a:hover').length > 0) && (e.shiftKey) ) {
       var url = $('a').attr('href');
        alert(url);    
            }
});

我在网站上找到的解决方案是关于当我开始悬停链接(鼠标悬停,mouseenter,mouseleave等)时,而不是当我已经悬停该链接时。

我的猜测是,jquery不知道要从页面中使用哪个元素,但是我不知道如何告诉它使用已经悬停的元素。

我知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

该代码正在获取 first 链接的href,而不是悬停的链接。在您的情况下,第一个链接显然没有undefined属性,因此没有$(document).on ('keydown', zEvent => { if (zEvent.shiftKey) { //-- Use 2 if()s for better performance / less impact on typing. var hoveredLink = $('a:hover'); if (hoveredLink.length) { var hoveredURL = hoveredLink.attr ('href'); console.log ("hoveredURL: ", hoveredURL || "Link has no href."); } } } );

这是工作代码:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Click in this area, then hover over links and press shift.</p>
<a href="Link_1.example">Link 1</a> &emsp; <a href="Link_2.example">Link 2</a> &emsp; <a>Link 3</a>
import stddraw
import sys
import stdio
#open the lexicon file
lexicon_input_file = open(sys.argv[1])
# copy the lexicon over from file
lexicon = lexicon_input_file.readlines()
#close the lexicon file
lexicon_input_file.close()
for i in range(len(lexicon)): #4000 words
    # breaks down entire lexicon into each element incremented from 0,1,2,3,4,..
    line_of_text = lexicon[i]
    line_without_newline = line_of_text.rstrip('\n')
print(lexicon)

运行该代码段以查看其运行情况。