Как Копировать с кнопки "Копировать" в переменную а не в буфер обмена

Поддержка
  • Прошерстил форум на наличиее решениия данной проблемы, нашел много постов где затрагивали это, но дельных решений в них мало.
    Суть проста, нужно чтобы с кнопок сайта 'Копировать' значение уходило не в буфер а в переменную. На форуме я уже где-то видел перехватчик, даже один раз и использовал его, но работает он не на всех сайтах, вернее на большинстве не работает. Так что нужно какое-то аналогичное решение, но рабочее. Вобше странно почему такая функция до сих пор не появилась в самом басе(Со стороны обывателя кажется, что если бас легко воротит браузер как захочет, то сделать перехват буфера должно быть несложно).

    Сразу отвечаю на рекомендации по типу: "В коде сайта можно найти все что нужно! Не знаете - значит вам рано". Нет, ребята, не все можно найти в коде. В даном случае кнопка копирует в буфер приватный ключ, и найти его в коде собственно не представляется возможным.

  • @hvrsh said in Как Копировать с кнопки "Копировать" в переменную а не в буфер обмена:

    В даном случае кнопка копирует в буфер приватный ключ, и найти его в коде собственно не представляется возможным.

    Можно повесить обработчик на событие по клику на элемент. Обработчик будет делать все, что тебе надо.

    Отрицательный момент - сайт сможет понять этот финт ушами.

    В коде я не сильно уверен, но должен работать:

    <button id="copyButton">Click Me</button>
    
    // Get the element with the specified id
    const myButton = document.getElementById("myButton");
    
    // Function to handle the click event
    function handleClick() {
      // Your event handling code here
      console.log("Button clicked!");
    
      // Capture the clipboard value
      navigator.clipboard.readText()
        .then(clipboardText => {
          console.log("Clipboard content:", clipboardText);
    
          // You can now work with the clipboardText as needed
        })
        .catch(error => {
          console.error("Error reading clipboard:", error);
        });
    }
    
    // Add a click event listener to the specific element
    if (myButton) {
      myButton.addEventListener("click", handleClick);
    }
    
  • @sergerdn Попробовал так. Ноль реакции. Подставил свой js селектор в ваш код не заработало.

    // Get the element with the specified id
    const myButton = document.querySelector("#__next > button");
    
    // Function to handle the click event
    function handleClick() {
      // Your event handling code here
      console.log("Button clicked!");
    
      // Capture the clipboard value
      navigator.clipboard.readText()
        .then(clipboardText => {
          console.log("Clipboard content:", clipboardText);
    
          // You can now work with the clipboardText as needed
        })
        .catch(error => {
          console.error("Error reading clipboard:", error);
        });
    }
    
    // Add a click event listener to the specific element
    if (myButton) {
      myButton.addEventListener("click", handleClick);
    }
    
  • Ну пока нет встроенных средств, можно ведь перед нажатием кнопки ограничить доступ остальных потоков к буферу обмена? Чтобы потом спокойно нажать и получить буфер...

  • @Vituskosoy said in Как Копировать с кнопки "Копировать" в переменную а не в буфер обмена:

    Ну пока нет встроенных средств, можно ведь перед нажатием кнопки ограничить доступ остальных потоков к буферу обмена? Чтобы потом спокойно нажать и получить буфер...

    переопределите функции этого api на свои и все

    как пример

    navigator.clipboard.writeText = (data) => {
        localStorage.setItem('clipboard', data)
    }
    
    navigator.clipboard.write = (data) => {
        localStorage.setItem('clipboard', data)
    }
    
  • @hvrsh said in Как Копировать с кнопки "Копировать" в переменную а не в буфер обмена:

    @sergerdn Попробовал так. Ноль реакции. Подставил свой js селектор в ваш код не заработало.

    // Get the element with the specified id
    const myButton = document.querySelector("#__next > button");
    
    // Function to handle the click event
    function handleClick() {
      // Your event handling code here
      console.log("Button clicked!");
    
      // Capture the clipboard value
      navigator.clipboard.readText()
        .then(clipboardText => {
          console.log("Clipboard content:", clipboardText);
    
          // You can now work with the clipboardText as needed
        })
        .catch(error => {
          console.error("Error reading clipboard:", error);
        });
    }
    
    // Add a click event listener to the specific element
    if (myButton) {
      myButton.addEventListener("click", handleClick);
    }
    

    Что значит не заработало? Само событие отработало? Хоть какая-то строчка в логе появилась?

  • @UserTrue said in Как Копировать с кнопки "Копировать" в переменную а не в буфер обмена:

    @Vituskosoy said in Как Копировать с кнопки "Копировать" в переменную а не в буфер обмена:

    Ну пока нет встроенных средств, можно ведь перед нажатием кнопки ограничить доступ остальных потоков к буферу обмена? Чтобы потом спокойно нажать и получить буфер...

    переопределите функции этого api на свои и все

    как пример

    navigator.clipboard.writeText = (data) => {
        localStorage.setItem('clipboard', data)
    }
    
    navigator.clipboard.write = (data) => {
        localStorage.setItem('clipboard', data)
    }
    

    Этот вариант интереснее моего.

  • @sergerdn Ну написал что ноль реакции,) ничего в логе не было ни во время запуска кода, ни во время нажатия на кнопку. Шас буду пробовать вариант от @UserTrue