javascript 如何选择元素的内容并将其复制到剪贴板?

xzlaal3s  于 2022-12-25  发布在  Java
关注(0)|答案(2)|浏览(155)

我希望能够点击特定网站上的某些文本,并选择复制到键盘上。到目前为止,我用这样的东西来选择特定类使用手写笔的文本。

.classname {
    user-select: all;
}

我怎么能把它也复制到键盘上呢?在IATE上尝试这个方法确实可以选择字符串,但不能复制(点击那里的任何翻译)。

// ==UserScript==
// @name         Iate select
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://iate.europa.eu/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

  let style = document.createElement('style');
  style.innerHTML = 'app-iate-search-term-refine{ user-select: all !important; }';

  document.body.appendChild(style);

const element = document.querySelector('app-iate-search-term-refine');

element.addEventListener('click', () => {
const text = element.textContent;

    GM_setClipboard(text);
});
})();
f0ofjuux

f0ofjuux1#

在要复制文本的元素上添加click event listener,然后使用GM_setClipboard

  • 当DOM“就绪”时,元素是不可访问的,因此,下面的脚本使用waitForKeyElementsBrock Adams开发的实用程序。
  • 还有更多app-iate-search-term-refine类型的元素,您需要查询所有这些元素,然后循环遍历每个元素并添加相同的事件侦听器。

下面的例子应该适用:

// ==UserScript==
// @name         Iate select
// @version      0.1
// @author       greektranslator
// @match        https://iate.europa.eu/*
// @require      https://gist.githubusercontent.com/BrockA/2625891/raw/waitForKeyElements.js
// @grant        GM_setClipboard
// @grant        GM_addStyle
// ==/UserScript==
/* globals waitForKeyElements */

(function() {
    'use strict';

    GM_addStyle('app-iate-search-term-refine { user-select: all !important; }');

    waitForKeyElements('app-iate-search-term-refine', addListener, false);

    function addListener() {
        const elements = document.querySelectorAll('app-iate-search-term-refine');

        elements.forEach(element => {
            element.addEventListener('click', () => {
                const text = element.textContent.trim();

                GM_setClipboard(text);
            });
        });
    }
})();
dxxyhpgq

dxxyhpgq2#

这个代码可以用,有一天它对我有用。

element.addEventListener('click', () => {
    const text = element.textContent;

    navigator.clipboard.writeText(text)
    .then(() => {
      // Here you can handle successful copying
    })
    .catch(err => {
      // Here you can handle error (err)
    });
});

相关问题