获取已经悬停的 link 的地址

Get address of link which is already hovered

我想为 tampermonkey 创建一个脚本,这样当我 已经 在 link 上并按下 Shift 键时,我会得到一个带有 link的地址。

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

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

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

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

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

该代码正在获取 第一个 link 的 href,而不是悬停的那个。在您的情况下,第一个 link 显然没有 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>

运行 代码片段以查看实际效果。