2016-12-07 5 views
0

テキストや関連するsrcではなく、イメージ自体をコピーしたいと思います。javascriptコマンドでのみ画像を選択してクリップボードにコピーする方法はありますか?

私はあなたが遊んで、そのコピーテキストは罰金が、それはない画像のために働く見ることができるhttps://jsfiddle.net/pvuefca7/1/

jsfiddle例を作りました。私はそれがノードか何かそれらの行に沿っていない<img>と関係があると思う。特定の画像を選択して対処する方法があるかどうかを尋ねています。 document.execCommand('Copy');コマンドは、イメージが唯一の要素であればイメージをコピーし、IEは新しいタブでイメージを開き、コンソールでコマンドを実行します。しかし、私はそれが唯一の要素ではない時には、イメージに対処する方法が必要です。

+1

http://stackoverflow.com/questions/33175909/copy-image-to-clipboard –

+0

textarea.valueを設定しましたテキスト – Wonder

+0

コピーしたイメージを貼り付けると予想される結果は何ですか?イメージはどこに貼り付けられますか? – guest271314

答えて

1

ボタンをクリックするとBlobとイメージをリクエストできます。 が<textarea>の要素からdata URIの画像をFileReaderloadに設定した後、.readAsDataURL()を呼び出します。 .valuetextareaを選択してください。プロンプトが表示されたらCTRL+Cを押す。 copyでイベントハンドラは、このdoesntのは、画像が、Altキーをコピーしevent.clipboardData

<div> 
 
    <img id="image" width="100" src="https://placehold.it/100x100?text=✔"> 
 
    <button onclick="copyElement('image');">Copy image</button> 
 
</div> 
 
<script> 
 
function copyElement(id) { 
 
    var element = document.getElementById(id); 
 
    var text = document.createElement("textarea"); 
 

 
    document.oncopy = function(e) { 
 
    e.clipboardData.setData("text/plain", text.value); 
 
    console.log(e.clipboardData.getData("text/plain")); 
 
    } 
 

 
    fetch(element.src.replace(/^(http:|https:)/, location.protocol)) 
 
    .then(function(response) { 
 
     return response.blob() 
 
    }) 
 
    .then(function(blob) { 
 
     var reader = new FileReader(); 
 
     reader.onload = function() { 
 
     document.body.appendChild(text); 
 
     text.value = reader.result; 
 
     text.select(); 
 
     alert("Press CTRL+C to copy image to clipboard"); 
 
     } 
 
     reader.readAsDataURL(blob) 
 
    }) 
 
} 
 

 
</script>

+0

私はこれを後で試してみるでしょう、私は今仕事に行く必要があります。それが大丈夫ならば、ちょうどもう1つ質問します。この機能は画像を新たに要求しますか?私があなたに言ったように、これは要求されるたびに再生するキャプチャを必要とするからです。 – Wonder

+1

@Wonderはい、ブラウザのキャッシュ設定に応じて、画像を再度要求することができます。あなたが記述している実際のキャプチャとページ環境なしで試してみる方法がわからないのですか? – guest271314

+0

私はこれを試してみましたが、これは動作しません。キャプチャが新しいリクエストごとに再生される前に言いましたが、これは登録ページに表示されたキャプチャと異なるキャプチャを取得することを意味します。私はあなたのコードをcaptchaのリンクで置きました。http://codepen.io/anon/pen/QGxmeqあなたは、コピーボタンを2回押すと、captchaが自分自身を変えずに写真を撮ったとしても、2つの異なる結果が得られます。 – Wonder

関連する問題