Я пытаюсь скопировать текст в буфер обмена после нажатия кнопки. В настоящее время это работает, когда у меня есть отдельная функция для копирования различных разделов HTML, которые я хочу скопировать, однако, когда я пишу 1 функцию для обоих с параметром, это не работает.
У меня есть 2 функциикоторые выглядят так:
function copyStringToClipboardA () {
// Create new element
var el = document.createElement('input');
// Set value (string to be copied)
el.value = document.getElementById("trackEvent").value;
// Set non-editable to avoid focus and move outside of view
el.setAttribute('readonly', '');
el.style = {position: 'absolute', left: '-9999px'};
document.body.appendChild(el);
// Select text inside element
el.select();
// Copy text to clipboard
document.execCommand('copy');
// Remove temporary element
document.body.removeChild(el);
}
function copyStringToClipboardB() {
// Create new element
var el = document.createElement('input');
// Set value (string to be copied)
el.value = document.getElementById("identifyEvent").value;
// Set non-editable to avoid focus and move outside of view
el.setAttribute('readonly', '');
el.style = {position: 'absolute', left: '-9999px'};
document.body.appendChild(el);
// Select text inside element
el.select();
// Copy text to clipboard
document.execCommand('copy');
// Remove temporary element
document.body.removeChild(el);
}
Единственное, что отличается в этих двух функциях, это el.value
. Я вызываю эти две функции нажатием одной кнопки, которая выглядит следующим образом:
document.addEventListener("DOMContentLoaded", function(event){
//Event Examples
var b = document.getElementById('trackCopy');
var c = document.getElementById('identifyCopy');
b.addEventListener('click', copyStringToClipboardA, false);
c.addEventListener('click', copyStringToClipboardB, false)
});
Я пытаюсь написать 1 функцию, которая принимает строку в качестве параметра вместо записи 2 функций. Я попытался написать следующую функцию, которая принимает строку в качестве параметра:
function copyStringToClipboard(myInput) {
// Create new element
var el = document.createElement('input');
// Set value (string to be copied)
el.value = document.getElementById(myInput).value;
// Set non-editable to avoid focus and move outside of view
el.setAttribute('readonly', '');
el.style = {position: 'absolute', left: '-9999px'};
document.body.appendChild(el);
// Select text inside element
el.select();
// Copy text to clipboard
document.execCommand('copy');
// Remove temporary element
document.body.removeChild(el);
}
, а затем вызываю ее по щелчку следующим образом:
document.addEventListener("DOMContentLoaded", function(event){
//Event Examples
var b = document.getElementById('trackCopy');
var c = document.getElementById('identifyCopy');
b.addEventListener('click', copyStringToClipboard("trackEvent"), false);
c.addEventListener('click', copyStringToClipboard("identifyEvent"), false)
});
Проблема, с которой я столкнулся в этой реализации:что второй identifyEvent
копируется каждый раз.
Я хочу добиться поведения, которое заключается в копировании выделенного текста в буфер обмена.