скопировать элемент как HTML в буфер обмена

Мне удалось написать jQuery, чтобы найти элемент и скопировать его html в буфер обмена (т.е. только).

Проблема в том, что когда я вставляю это в область расширенного текстового поля в sharepoint, он вставляет HTML только как текст.

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


person Brian Scott    schedule 26.05.2010    source источник
comment
Тогда нет ли альтернативного способа сделать это?   -  person Brian Scott    schedule 26.05.2010


Ответы (2)


К сожалению, насколько я знаю, единственный программный доступ, который IE дает к буферу обмена, позволяет вам устанавливать текстовые данные и данные URL, но ничего больше: http://msdn.microsoft.com/en-us/library/ms536744(v=VS.85).aspx

Это работает:

window.clipboardData.setData("text", "<div>Testing</div>");

... но имеет проблему, о которой вы упомянули. К сожалению, это не работает:

window.clipboardData.setData("html", "<div>Testing</div>");

Немного удивительно, правда.

person T.J. Crowder    schedule 26.05.2010
comment
как ни странно, я просто проверял, могу ли я вставить туда html. :-) - person Brian Scott; 26.05.2010

Это то, что я использовал для копирования/вставки HTML-элемента гиперссылки в буфер обмена, чтобы при вставке href был скрыт, и вы видели только «красивое» имя.

HTML:

<button onclick="copyToClipboard()">Copy me!</button>

Javascript:

var copyToClipboard = (function() {
    var _dataString = null;
    $('.transform').toggleClass('transform-active');
    document.addEventListener("copy", function(e){
        if (_dataString !== null) {
            try {
                e.clipboardData.setData("text/html", link);
                e.preventDefault();
            } finally {
                _dataString = null;
            }
        }
    });
    return function(data) {
        _dataString = data;
        document.execCommand("copy");
    };
})();
person Ben Janos    schedule 05.07.2017