2017-04-08 1 views
1

私は現在Javascriptを学習しており、次の問題に直面しています。私は、読み取り専用のHTMLテキストエリアのテキストをコピーし、次のコードを使用したい:Javascript - ボックスを含まないコピーテキストを挿入

function copy_text() 
{ 
    var text = document.getElementById("textbox"); 
    var range = document.createRange(); 
    range.selectNode(text); 
    window.getSelection().addRange(range); 
    document.execCommand("copy"); 
} 

は、実際には動作しますが、少し癖があります。たとえば、Webブラウザの入力行のように、コピーしたテキストを別の入力フィールドに挿入すると、テキストは完全に細かいテキストとして表示されます。ただし、Microsoft Wordにテキストを貼り付けると、テキストが2つのスライド(1つは下部、もう1つは左側)のボックスに表示されます。ここで何が起こっているのですか?

答えて

2

ノード全体を選択しています(textarea)ので、クリップボードにコピーされます。 Wordは、textareaを文書に貼り付けます。

あなただけtextareaのテキストをしたい場合は、単にそのselectメソッドを使用します。

function copy_text() { 
 
    var text = document.getElementById("textbox"); 
 
    text.select(); 
 
    document.execCommand("copy"); 
 
} 
 
document.getElementById("btn").addEventListener("click", copy_text, false);
<textarea id="textbox" readonly>Some example text</textarea> 
 
<br><input type="button" id="btn" value="Copy">

select内容のテキストエリアのではなく、テキストエリア自体を選択します。

+0

ありがとう、それは私が意図したものです。ちょっとした疑問:eventListenerではどういう意味ですか? – AlexM

+0

@AlexM:[MDNの[addEventListener'](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)を参照してください。今はオプションです(デフォルトは 'false')が、これまでは使用されていませんでした。ここ2017年に、あなたはそれを離れることが大事です。 IEが 'addEventListener'を(IE9で)得たとき、彼らはそれをオプションにし、Chromeはいつもオプションにしました。 Firefoxはv6でオプションにしました。古いAndroidブラウザではオプションです。ええ、私はただそれをそこに置くべきです。 :-) –

+0

さて、私はそれを残すでしょう。テキストを削除するために上に書いたのと全く同じことを試しました。まったく同じ関数。唯一の変更はdocument.execCommand( "delete")です。ただし、テキストのコピーはうまくいきますが、同じコードで削除しようとしても機能しません。代わりに、テキストエリアのテキスト全体が選択されます(この典型的な青い背景)。しかし、削除されません。何故ですか?私はそれが実際に働くべきだと思う。 – AlexM

関連する問題