2011-12-14 5 views
4

最新のブラウザの「コピーURL」機能を模倣しようとしています。jQueryを使用して最新のブラウザのコピーURLを模倣する(コピー時にhttp://を追加)

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://を追加します。これは不要です。クリップボードに追加したいだけです。

+0

は私の質問のタイトルと記事を編集するためのあなたのRob Hruskaのをありがとうございますが、次回は私のt.i.a行を削除しないでください! – Dizzi

+3

tiaは暗黙のことです。タグラインのように、疑問をぶつけてしまいますが、実際にユーザーの応答を失望させることはありません。 – Andrew

答えて

3

注: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

jQueryで「コピー」イベントが見つからず、クロスブラウザで動作させるのは少し難しいようです。

プラグインとクリップボードにテキストをコピーするその他の方法については、this thread/questionを参照してください。 (一部使用フラッシュ(SWFファイル)それを動作させるために。)対象の

詳細情報:

+0

実際には、=> https://developer.mozilla.org/en/DOM/element.oncopyがあります。 –

関連する問題