【问题标题】:Why does Copy button copy 'undefined' instead of copying value from html dom?为什么复制按钮复制 \'undefined\' 而不是从 html dom 复制值?
【发布时间】:2022-08-19 22:33:08
【问题描述】:

我正在尝试制作自己的用户脚本 对于https://mlwbd.ltd/movie/don-2022 复制隐藏的输入值链接

preTag = document.getElementsByName(\"FU\");
p = preTag[0];
console.log(p);


Ekra = document.getElementsByClassName(\"linktabs\");
q = Ekra[0];
console.log(q);

function copy(ele) {
       let temp = document.createElement(\'textarea\');
       document.body.appendChild(temp);
       temp.value = ele.textContent;
       temp.select();
       document.execCommand(\'copy\');
      temp.remove();
   }


btn = document.createElement(\"button\");
btn.innerHTML = \"copy\"
btn.onclick = function(){
     copy(\"p\");
};

q.insertBefore(document.createElement(\"br\"), q.childNodes[0])
q.insertBefore(btn, q.childNodes[0])

Html 代码是

输入类型=\"隐藏\" 名称=\"FU\" 值=\"https://songslyric.site/links/46905/\"
当我单击按钮时,我想复制 name=\"FU\" 的值。 我粘贴的代码是从 google chrome sn-ps 创建的。 请帮我。
  • 您是否错误地从源代码中复制粘贴,或者它实际上是说copy(\"p?因为那不是有效的代码。
  • 实际上这是我输入的错误 copy(\"p\");在我的代码上,即使按钮复制未定义,当然我是 JavaScript 的初学者。
  • copy 函数的 ele 参数应该是一个元素,但您正在向它发送一个字符串 (\"p\")。编辑:顺便说一句,不推荐使用 execCommand 。
  • 我是初学者兄弟,我通过观看视频创建了此脚本,但我无法理解。如果不介意,您能帮我修复该代码吗?我关注了这个视频youtube.com/watch?v=U4dSWJFIQ0A
  • 您观看的任何视频都是应避免的糟糕教程。这不是好的(甚至是现代的)代码。我建议你学习 MDN 文档:developer.mozilla.org/en-US/docs/Web/JavaScript

标签: javascript tampermonkey userscripts


【解决方案1】:

这将使您开始:

// ==UserScript==
// @name         TEST TEST TEST TEST
// @namespace    http://tampermonkey.net/
// @version      0.1
// @match        https://mlwbd.ltd/movie/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    const $ = document.querySelector.bind(document);

    $('body').insertAdjacentHTML('beforeend', init_css() );

    setTimeout(() => {
        $('#mybutt').addEventListener('click', () => {
            //alert('hi');
            const fu = $('#download table form input[name=FU]');
            //console.log(fu.value);
            copy2clip(fu);
        });
    },500);


})();
function init_css(){
    return `
    <button id="mybutt">Copy2Clip</button>
    <style id="myInitCss">
        #mybutt{position:absolute;top:90px;left:45%;height:30px;width:120px;}
        #mybutt{background:#0073ea;color:white;padding-top:5px;text-align:center;}
        #mybutt{z-index:99999;}
    </style>
    `;
}
function copy2clip(ele) {
    let temp = document.createElement('textarea');
    document.body.appendChild(temp);
    temp.value = ele.value;
    temp.select();
    document.execCommand('copy');
    temp.remove();
}

笔记:

  1. 代码不是 jQuery(它是 vanilla javascript)
  2. 您可以取消注释 alert()console.log 以查看当时的情况。

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    相关资源
    最近更新 更多