Нажмите, чтобы скопировать html-код элемента


Итак, в основном я пытаюсь создать свою собственную шпаргалку для начальной загрузки, которая позволила бы мне автоматически копировать html-код элемента в буфер обмена, когда я нажимаю на него или на определенную кнопку. Немного похоже на этот сайт: https://hackerthemes.com/bootstrap-cheatsheet/
Я знаю, как копировать текст, но как получить доступ к актуальному html-коду и скопировать его, чего я не знаю. Это код, который я использую для копирования текста:

<input type = "text" value = "Hello World" id = "myInput">
<button onclick = "myFunction()">Copy text</button>
<script>
  function myFunction() {
    var copyText = document.getElementById("myInput");
    copyText.select();
    document.execCommand("Copy");
    alert("Copied the text: " + copyText.value);
  }
</script>

был бы очень признателен за помощь ^^

Это .innerHTML.

deEr. 04.05.2018 15:43

Код, который вы уже используете, позволяет вам ввести что угодно, а затем скопировать это.

Random Channel 04.05.2018 16:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
5 377
4

Ответы 4

Используйте outerHTML, чтобы получить html в виде строки.

function myFunction() {

   //getting the html
   var copyText = document.getElementById("myInput").outerHTML;

   copyText.select();
   document.execCommand("Copy");

   //remove value
   alert("Copied the text: " + copyText);
}

Я знаю, что jQuery - отличный инструмент, но этот вопрос касается только js.

Random Channel 04.05.2018 16:18

Ой, извините, я не видел, что это был только JS. Вы все еще можете использовать свойство outerHTML: developer.mozilla.org/en-US/docs/Web/API/Element/outerHTML Я соответствующим образом скорректирую ответ.

Sirence 04.05.2018 16:23

Для доступа и изменения слов внутри div или любого элемента на самом деле это .innerHTML элемента.

function myFunction() {
  var button = document.getElementById("Button");
  var copyText = document.getElementById("myInput");
  copyText.select();
  document.execCommand("Copy");
  alert("Copied the text: " + copyText.value);
  button.innerHTML = "Copied!";
}
<input type = "text" value = "Hello World" id = "myInput">
<button onclick = "myFunction()" id = "Button">Copy text</button>

Это всего лишь быстрый пример, показывающий, что .innerHTML может изменять текст внутри кнопки. Если вы больше любите jQuery (как и я), вы можете использовать функцию .appendTo(), которая является тем же самым, но в jQuery. Я бы не рекомендовал вам это, поскольку в js уже есть встроенная функция для этого.

Теперь, чтобы скопировать код,

function myFunction() {
  var text = document.getElementById("myInput");
  var copyText = document.getElementById('myInput').outerHTML;
  var textbox = document.getElementById('html');
  textbox.value = copyText;
  var button = document.getElementById("Button");
  textbox.select();
  document.execCommand("Copy");
  alert("Copied the text: " + text.value + " HTML code!");
  button.innerHTML = "Copied!";
}
#html {
  visibility: hidden;
}
<input type = "text" value = "Hello World" id = "myInput">

<button onclick = "myFunction()" id = "Button">Copy text</button>
<input type = "text" value = "" id = "html">

Теперь этот второй код берет исходный код и копирует его.

OP запрашивает, чтобы весь элемент html (ввод) был скопирован как строка, а не текст внутри ввода.

Sirence 04.05.2018 16:32

Чтобы скопировать текст outerHtml, вам нужно взять его и поместить в textbox, чтобы вы могли выбрать его, а затем скопировать. Это довольно хакерский способ сделать это, но если вы хотите сделать это как хакерские темы, вы можете поместить HTML в disabled, выбираемый textbox, который красиво оформлен с помощью CSS.

<html>
  <head>
 
    <script>
      function myFunction() {
        // get the OUTER html of the element you want to copy
        var text = document.getElementById('myInput').outerHTML;

        // put that outerHTML into another textbox for copying
        var tempTextbox = document.getElementById('copyingText');
        tempTextbox.value = text;

        tempTextbox.focus();
        tempTextbox.select();
        
        document.execCommand("Copy");
      }
    </script>
    
  </head>
  <body>
    <input type = "text" id = "copyingText" />
    <input type = "text" value = "Copy Test" id = "myInput" />
    <button onclick = "myFunction()">Copy text</button>
    
  </body>
</html>

Вы не можете выполнять команды копирования / вырезания для элементов документа.

document.execCommand("Copy"); дает вам только входное значение, которое вы назвали select();, поэтому я предлагаю вам сделать следующее:

function myFunction() {
    var copyinput = document.createElement('input');
    copyinput.value = document.getElementById("myInput").outerHTML;
    copyinput.select();
    document.execCommand("Copy");
    alert("Copied the text: " + copyinput.value);
  }
<input type = "text" id = "myInput">
<button onclick = "myFunction()">Copy Code</button>

Другие вопросы по теме