JQuery - копирование ответа из AJAX-запроса в буфер обмена без необходимости повторного нажатия кнопки пользователем - PullRequest
0 голосов
/ 14 октября 2018

Я пытаюсь скопировать часть ответа JSON AJAX в буфер обмена пользователя.Пользователь отправляет форму, нажимая кнопку, и я хочу, чтобы ответ был скопирован в его буфер обмена, без необходимости повторного взаимодействия со страницей.

Что у меня есть:

$("#button").click(function() {
    try {
        $.ajax({
            url: "ajax.php",
            type: "POST",
            data:
            {
                ajax: ajax
            },
            success: function(result) {
                var results = $.parseJSON(JSON.stringify(result));

                let url = results['result']['url']; // Just a normal URL
                $("#content").append('<input id="copyurl" type="hidden" value="' + url + '">');
                $("#content").append('<button id="copy" class="hidden" onclick="copy()" />');

                $("#copy").click();

                //showSuccessIcon('absolute-center', 'The link has been copied to your clipboard!');
            },
            fail: function() {
                showErrorIcon('absolute-center', 'Oops! Could not connect to server.');
                throw new Error('Failed to send POST request');
            }
        });
    } catch(err) {
        showErrorIcon('absolute-center', 'Oops! Something went wrong.');
        throw new Error('Failed to send POST request: ' + err);
    }
});

copy ():

function copy() {
    var click = document.getElementById("copyurl");
    click.select();
    document.execCommand("copy");
}

Код сначала создает элемент ввода «copyurl», из которого копируется URL.Затем он создает скрытую кнопку, которую нажимает, и выполняет функцию copy ().

Этот код ничего не делает.Я не получаю никаких ошибок в консоли, и мой буфер обмена остается прежним.

Я читал, что браузер не будет выполнять execCommand () без ввода данных пользователем, поэтому я не уверен, что ям предложение даже возможно.(

1 Ответ

0 голосов
/ 15 октября 2018

так легко заменить

$("#copy").click();

на

$("#copy").trigger('click');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...