Как мне скопировать в буфер обмена в JavaScript?

Подобно предложению @locojay, вы можете применить difflib 's get_closest_matches к индексу df2, а затем применить join :

In [23]: import difflib 

In [24]: difflib.get_close_matches
Out[24]: 

In [25]: df2.index = df2.index.map(lambda x: difflib.get_close_matches(x, df1.index)[0])

In [26]: df2
Out[26]: 
      letter
one        a
two        b
three      c
four       d
five       e

In [31]: df1.join(df2)
Out[31]: 
       number letter
one         1      a
two         2      b
three       3      c
four        4      d
five        5      e

.

Если это были столбцы, в том же духе вы могли бы применить к столбцу, тогда merge :

df1 = DataFrame([[1,'one'],[2,'two'],[3,'three'],[4,'four'],[5,'five']], columns=['number', 'name'])
df2 = DataFrame([['a','one'],['b','too'],['c','three'],['d','fours'],['e','five']], columns=['letter', 'name'])

df2['name'] = df2['name'].apply(lambda x: difflib.get_close_matches(x, df1['name'])[0])
df1.merge(df2)

3033
задан Donald Duck 3 December 2017 в 15:44
поделиться

10 ответов

Похож на Вас, взял код от Копия Greasemonkey\JavaScript к кнопке Clipboard или первоисточнику этого отрывка...

Этот код был для Механика, следовательно unsafeWindow. И я предполагаю, что синтаксическая ошибка в IE прибывает из const ключевое слово, которое характерно для Firefox (замените его var).

4
ответ дан Community 4 December 2017 в 01:44
поделиться

Насколько я знаю, что только работает в Internet  Проводник.

Видят также Динамические Инструменты - Копия JavaScript К Буферу обмена , но это требует, чтобы пользователь изменил конфигурацию сначала, и даже затем это не делает, кажется, работает.

3
ответ дан Peter Mortensen 4 December 2017 в 01:44
поделиться
  • 1
    Это действительно аккуратно. От имени целой команды андроида: спасибо:) – balazsbalazs 23 January 2014 в 22:57

Чтение и изменение буфера обмена от веб-страницы ставят вопросы безопасности и конфиденциальности. Однако в Internet  Проводник, возможно сделать это. Я нашел этот отрывок в качестве примера :

    <script type="text/javascript">
        function select_all(obj) {
            var text_val=eval(obj);
            text_val.focus();
            text_val.select();
            r = text_val.createTextRange();
            if (!r.execCommand) return; // feature detection
            r.execCommand('copy');
        }
    </script>
    <input value="http://www.sajithmr.com"
     onclick="select_all(this)" name="url" type="text" />
82
ответ дан landfill baby 4 December 2017 в 01:44
поделиться

Другие методы скопируют простой текст в буфер обмена. Для копирования HTML (т.е., можно вставить результаты в редактора WSIWYG), можно сделать следующее в IE ТОЛЬКО . Это, существенно отличается от других методов, поскольку браузер на самом деле явно выбирает содержание.

// create an editable DIV and append the HTML content you want copied
var editableDiv = document.createElement("div");
with (editableDiv) {
    contentEditable = true;
}     
editableDiv.appendChild(someContentElement);          

// select the editable content and copy it to the clipboard
var r = document.body.createTextRange();
r.moveToElementText(editableDiv);
r.select();  
r.execCommand("Copy");

// deselect, so the browser doesn't leave the element visibly selected
r.moveToElementText(someHiddenDiv);
r.select();   
20
ответ дан Chase Seibert 4 December 2017 в 01:44
поделиться
  • 1
    но в этом случае необходимо использовать $HOME вместо ~ silent !mkdir ~/.vim_backup > /dev/null 2>&1, станет silent call mkdir ($HOME.'/.vim_backup', 'p') – m42e 6 June 2014 в 19:53

В браузерах кроме IE необходимо использовать маленький объект флэш-памяти управлять буфером обмена, например,

8
ответ дан Shog9 4 December 2017 в 01:44
поделиться

Начиная с Flash 10, копировать в буфер обмена можно только в том случае, если действие происходит от взаимодействия пользователя с объектом Flash. (Читайте соответствующий раздел из анонса Adobe Flash 10)

Решением является наложение флеш-объекта над кнопкой Copy или любым другим элементом, инициирующим копирование. Zero Clipboard в настоящее время является лучшей библиотекой с такой реализацией. Опытные Flash-разработчики могут просто захотеть создать свою собственную библиотеку.

13
ответ дан 22 November 2019 в 19:47
поделиться

Я попробовал много решений. Если это будет работать в современных браузерах, то это не будет в IE. если это будет работать в IE, то это не будет в IOS. Наконец ухаживавший их всех и прибыл в ниже фиксации, которая работает во всех браузерах, IOS, webview, и андроиде.

Примечание: Также покрытый сценарий, где пользователь отклоняет разрешение к буферу обмена. Кроме того, сообщение "ссылка, скопированная", будет отображено, даже если пользователь скопирует вручную.

<div class="form-group col-md-12">
<div class="input-group col-md-9">
    <input name="copyurl"
           type="text"
           class="form-control br-0 no-focus"
           id="invite-url"
           placeholder="http://www.invitelink.com/example"
           readonly>
    <span class="input-group-addon" id="copy-link" title="Click here to copy the invite link">
        <i class="fa fa-clone txt-18 text-success" aria-hidden="true"></i>
    </span>
</div>
<span class="text-success copy-success hidden">Link copied.</span>

Сценарий:

var addEvent =  window.attachEvent || window.addEventListener;
var event = 'copy';
var $inviteUrl = $('#invite-url');

$('#copy-link').on('click', function(e) {
    if ($inviteUrl.val()) {
        if (navigator.userAgent.match(/ipad|ipod|iphone/i)) {
            var el = $inviteUrl.get(0);
            var editable = el.contentEditable;
            var readOnly = el.readOnly;
            el.contentEditable = true;
            el.readOnly = false;
            var range = document.createRange();
            range.selectNodeContents(el);
            var sel = window.getSelection();
            sel.removeAllRanges();
            sel.addRange(range);
            el.setSelectionRange(0, 999999);
            el.contentEditable = editable;
            el.readOnly = readOnly;
            document.execCommand('copy');
            $inviteUrl.blur();
        } else {
            $inviteUrl.select();
            document.execCommand("copy");
        }
    }
});

addEvent(event, function(event) {
    if ($inviteUrl.val() && event.target.id == 'invite-url') {
        var $copyLink = $('#copy-link i');
        $copyLink.removeClass('fa-clone');
        $copyLink.addClass('fa-check');
        $('.copy-success').removeClass('hidden');
        setTimeout(function() {
            $copyLink.removeClass('fa-check');
            $copyLink.addClass('fa-clone');
            $('.copy-success').addClass('hidden');
        }, 2000);
    }
});
0
ответ дан 22 November 2019 в 19:47
поделиться

Вот легкий пример;)

<!DOCTYPE html>
<html>
<body>

<input type="text" value="Hello World" id="myInput">
<button onclick="myFunction()">Copy text</button>

<p>The document.execCommand() method is not supported in IE8 and earlier.</p>

<script>
function myFunction() {
  var copyText = document.getElementById("myInput");
  copyText.select();
  document.execCommand("copy");
  alert("Copied the text: " + copyText.value);
}
</script>

</body>
</html>
1
ответ дан 22 November 2019 в 19:47
поделиться
function copytoclipboard(element) {


  var $temp = $("<input>");
        $("body").append($temp);
        $temp.val('0'+element).select();
        document.execCommand("copy");
        $temp.remove();

}
0
ответ дан 22 November 2019 в 19:47
поделиться

Это - автономный класс и гарантирует, что никакое высвечивание не могло произойти от временного файла textarea путем размещения его вне экрана.

Это работает в Safari (рабочий стол), FF и Chrome.

// ================================================================================
// ClipboardClass
// ================================================================================
var ClipboardClass = (function() {


   function copyText(text) {
        // Create temp element off-screen to hold text.
        var tempElem = $('<textarea style="position: absolute; top: -8888px; left: -8888px">');
        $("body").append(tempElem);

        tempElem.val(text).select();
        document.execCommand("copy");
        tempElem.remove();
   }


   // ============================================================================
   // Class API
   // ============================================================================
    return {
        copyText: copyText
    };
})();
1
ответ дан 22 November 2019 в 19:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: