2

http://www.steamdev.com/zclip/#usageを使用してテキストをクリップボードにコピーしていますが、そのコードは正常に機能しています。フラッシュを使用してクロスブラウザソリューションを作成し、 ZeroClipboardに基づいています。これは、現時点で最適なソリューションであると考えられています。

ただし、ページにクリップボードのボタンまたはリンクへの複数のコピーが必要です。これが例です。

http://jsfiddle.net/stofke/TB23d/

このコードは機能し、クーポンコードのテキストをクリップボードにコピーして、正しいリンクで新しいページを開きます。リンク/IDごとにコードを複製せずに、他のリンクでそのコードを使用するにはどうすればよいですか。

クラスだけを使う

$(function() {
$('.copy').zclip({
    path: 'http://shopsheep.com/js/ZeroClipboard.swf',
    copy: $(this).text(),
    afterCopy: function() {
        window.open($(this).attr('href'));
    }
});

});

動作しません:ここで確認できるように:http://jsfiddle.net/stofke/EAZYW/ afterCopy関数を削除すると、$(this).text()がページ全体を返すだけでなく、ページ全体を返すことがわかります。リンクタグ間のテキスト。

このようなことをする

$(function() {
$('a.copy', this).zclip({
    path: 'http://shopsheep.com/js/ZeroClipboard.swf',
    copy: $('a.copy', this).text(),

});

});

少し改善されていますが、ここに表示されているように、リンクタグ間のすべてのテキストが返されます。 http://jsfiddle.net/stofke/hAh3j/

4

4 に答える 4

3

更新:これは機能しなくなりましたが、投稿を削除できません

これはうまくいくようです-誰かがそれをよりエレガントにすることができるかもしれません

http://jsfiddle.net/5nLw6/7/

$(function() {
    $('.copy').each(function() {
        var linkId = $(this).attr("id");
        $(this).zclip({
        path: 'http://shopsheep.com/js/ZeroClipboard.swf',
        copy: $("#"+linkId).text(),
        afterCopy: function() {
            window.open($('#'+linkId).attr('href'));
        }
    });
  });
});
于 2011-03-31T06:51:53.260 に答える
2

私は実際にZeroClipboardを直接使用するのも同じくらい簡単であることを発見しました。誰かがzclipを使用せずに解決策を求めている場合に備えて、このコードを追加しました。

ZeroClipboard.setMoviePath('http://shopsheep.com/js/ZeroClipboard.swf');
$(document).ready(function() {
    $(".copy").each(function(i) {
        var clip = new ZeroClipboard.Client();
        var myTextToCopy = $(this).text();
        var myTextUrl = $(this).attr('href');
        clip.setText(myTextToCopy);
        clip.addEventListener('complete', function(client, text) {
            window.open(myTextUrl);
        });
        clip.glue($(this).attr("id"));
    });
});

http://jsfiddle.net/stofke/JxMbd/

于 2011-03-31T07:54:19.737 に答える
0

これは、OodlesTechnologiesで従うものです。

クリップボードへのゼロコピーを使用するには、2つのファイルが必要です1。ZeroClipboard.js2.ZeroClipboard.swf
両方のファイルはここからダウンロードできます

<html>
<head>
    <script src =”../ZeroClipboard.js”&gt;</script>
    <script >
     // configure ZeroClipboard first
     ZeroClipboard.config( { moviePath : /path/swffile/ZeroClipboard.swf } );

     // initialize constructor
    var client = new ZeroClipboard($(“#elementid”));

    /* elementid is the element on which click , the data will copy  to clipboard. you can also pass multiple elements, it use jquery selector */
        </script>
<body>
<input type=”text”  id =”targetid”&gt;</button>
<button  id =”elementid” data-clipboard-text ='data for copy’ >copy</button>
</body>
</head>
<html>

ZeroClipboardは、要素のイベントがZeroClipboardのコンストラクターに渡されるときに、data-clipboard-text属性の値を自動的にコピーします。

于 2016-10-14T11:01:11.483 に答える
0

軽量のjQueryソリューション...クラスを再利用して任意の要素からテキストをコピーします。

$(document).on('click', '.copytoclipboard', function(e) {
  if($("#holdtext").length < 1)
    $("body").append('<textarea id="holdtext" style="height:0;width:0;border:0;outline:0;resize:none;"></textarea>');
  $("#holdtext").val($(this).text()).select();
  document.execCommand("Copy");
});
于 2017-02-10T12:16:02.360 に答える