Имитация копии URL современных браузеров с использованием jQuery (добавьте http: // при копировании) - PullRequest
4 голосов
/ 14 декабря 2011

Я пытаюсь имитировать функциональность "copy url" современных браузеров.

При просмотре URL вы не видите http://. Если вы скопируете его в буфер обмена, будет добавлено http://. Пока у меня есть это:

$('#address input').bind('copy', function() {
  $.fn.changevalue = function (v) {
    return $(this).val(v).trigger('change');
  }
  var origval = $(this).val();
  $(this).changevalue('http://' + origval);
});

Это добавляет http:// к полю ввода, если обнаружено действие «копировать», но оно останавливает копирование в буфер обмена. Функция также добавляет http:// к основному полю ввода, что мне не нужно. Я просто хочу добавить его в буфер обмена.

Ответы [ 2 ]

3 голосов
/ 15 декабря 2011

Примечание: JavaScript не может получить доступ к буферу обмена. Любой плагин, который делает это, обычно использует Flash в фоновом режиме.

Чтобы исправить событие копирования, после добавления http:// к входу необходимо запустить событие select (не событие change). Когда значение изменяется, текст больше не выделяется, поэтому вам нужно выбрать новый текст после его редактирования.

Чтобы удалить http:// из поля ввода, вы можете добавить setTimeout в конец события для сброса значения.

Кроме того, вы должны установить $.fn.changevalue вне функции обратного вызова, его не нужно переустанавливать при каждом событии копирования.

$.fn.changevalue = function(v) {
    return this.val(v).trigger('select');  // this is already a jQuery object
}

$('#address input').bind('copy', function() {
    var $this = $(this),
    origval = $this.val();
    $this.changevalue('http://' + origval);
    setTimeout(function(){
        $this.val(origval);
    }, 0);
});

Демо: http://jsfiddle.net/TGHcD/

0 голосов
/ 14 декабря 2011

Я не могу найти какое-либо событие "копирования" в jQuery, и кажется немного сложным заставить его работать в разных браузерах.

См. эту тему / вопрос для плагинов и других способовскопировать текст в буфер обмена.(Некоторые используют flash (swf-файлы), чтобы заставить его работать.)

Дополнительная информация по теме:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...