将悬停元素的标题属性复制到剪贴板

将悬停元素的标题属性复制到剪贴板

如同这个问题,但不限于<a...>链接元素;相反,我想将title属性从任意元素(TD在我的用例中通常为)复制到剪贴板。

我会满足于上下文菜单选项或热键。无论哪种方式,鼠标直接位于其上的元素就是我想要从中获取标题的元素。

在我的用例中,该网站迪吉特用省略号缩写“长”字符串,并将整个字符串放在标题中。(而不是使用 CSS,它可以对任何字符串执行此操作而无需更改字符串,它们实际上发出了
<td title="very long string" class="text-xs-left">very lon...</td>
我告诉他们有更好的方法,但它仍然是这种笨拙的方法。)

答案1

您可以使用 tampermonkey chrome 扩展来执行此操作,
脚本如下:

// ==UserScript==
// @name         ctrl + mouse-right-click to copy title from cloest element
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://*/*
// @grant        GM_setClipboard
// ==/UserScript==

;
(function() {
    'use strict';

let clickFn=(ev)=>{
    console.log(`begin copy title from cloest element ...`)
    if(ev.ctrlKey){
        ev.preventDefault()
    }else{
        console.log(` please hold down the Ctrl key`)
        return
    }
    let target=ev.target
    let v=""

    if(1){
        let pp=target
        let bb=document.body
        let distance=-1
        let attr='title'
        // attr='id'
        while(pp!==bb){
            distance++
            if(pp.hasAttribute(attr)){
                v=pp.getAttribute(attr)
                console.log(`dis:${distance}|tag:${pp.tagName}|title:${v}`)
                GM_setClipboard(v,"text")
                break
            }
            pp=pp.parentElement
        }
    }
    if(v){
        console.log(`copy title success`)
    }else{
        console.log(`title Not found`)
    }
}

//document.addEventListener("click",clickFn)
document.addEventListener("contextmenu",clickFn)

})();

用法:

按住 ctrl 键,然后按鼠标右键

相关内容