Копировать строку в буфер обмена со скрытым полем - PullRequest
1 голос
/ 01 октября 2019

Я пытаюсь скопировать строку параметров в буфер обмена, используя собственный JS. Пока это работает нормально, однако у меня небольшая косметическая проблема, когда я запускаю свой фрагмент кода в IE 7.

Мой код:

function copyStringToClipboard (str) {
    // Create new element
    var el = document.createElement('input');
    el.setAttribute("display", "none");
    el.setAttribute("type", "text");
    el.value = str;
    el.setAttribute('readonly', '');
    document.body.appendChild(el);
    el.select();
    // Copy text to clipboard
    document.execCommand('copy');
    // Remove temporary element
    document.body.removeChild(el);
}

Как я уже упоминал выше, этот делает работают в проверенных браузерах. Однако он создает поле ввода текста visible (строка 3). Я пытался использовать el.style = {position: 'absolute', left: '-9999px'};, но Internet Explorer выдает:

Не реализовано

Я думал о создании input type="hidden", но кажется, что это скрытое поле невыбираемый - что имеет смысл. Само собой разумеется, что это действие вызывает onClick(), так что действительно с действием пользователя.

Идеи, как это решить?

1 Ответ

1 голос
/ 01 октября 2019

Вместо использования el.setAttribute("display", "none");, вы должны изменить эту строку на:

el.style.display = "none";

Почему это работает? Установка атрибута отображения ни один не влияет на стиль. Он должен быть добавлен как встроенный стиль или в css, чтобы скрыть поле ввода.

...