Javascript 使用jQuery模仿现代浏览器的复制url(复制时添加http://www.jQuery)

Javascript 使用jQuery模仿现代浏览器的复制url(复制时添加http://www.jQuery),javascript,jquery,copy-paste,Javascript,Jquery,Copy Paste,我试图模仿现代浏览器的复制url功能 查看url时,您不会看到http://。如果将其复制到剪贴板,将添加http://文件。到目前为止,我有: $('#address input').bind('copy', function() { $.fn.changevalue = function (v) { return $(this).val(v).trigger('change'); } var origval = $(this).val(); $(this).chang

我试图模仿现代浏览器的复制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://添加到主输入字段中,这是我不希望看到的。我只想将它添加到剪贴板。

我在jQuery中找不到任何复制事件,要使它跨浏览器工作似乎有点棘手

有关将文本复制到剪贴板的插件和其他方法,请参阅。有些人使用flash swf文件使其工作

有关该主题的更多信息:


注意: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);
});

演示:

感谢Rob Hruska编辑我的问题标题和帖子,但下次请不要删除我的t.i.a行!tia是隐含的,它就像标语一样,只是把问题弄得乱七八糟,如果它真的阻止用户回答,我也不会感到惊讶。