私はhtml要素からデータセットからいくつかのコンテンツをコピーしたいと思います。execCommandでjavascriptをコピー
HTMLコード
<p id="[email protected]{{ id }}" data-password="@{{ password }}"
data-state="0">@{{ hidePassword }}</p>
<button class="mdl-button mdl-js-button mdl-button--icon">
<i data-event="copy" data-obj="util" data-target="[email protected]{{ id }}"
class="material-icons clickable-icon">content_copy</i>
</button>
コピー方法
方法は、データ・イベントとデータ-OBJ属性を介して呼び出されるbeeingて。
copy (args) {
let copyText = document.getElementById(args.target).dataset.password;
console.log(copyTest); // output: specific password
document.execCommand("Copy");
}
このように、コンテンツをクリップボードにコピーしません。誰かがエラーを見ますか?
UPDATE
次のコードは、のHTMLElementの実際のTextContentために働きます。
しかし、私はだから私は、非表示の入力フィールド内の値を書き込み、それを選択し、それをコピーして、
解決策
let range = document.createRange();
let selection = window.getSelection();
let node = document.getElementById(args.target);
range.selectNodeContents(node);
selection.removeAllRanges();
selection.addRange(range);
document.execCommand("copy");
データ-password属性から値をコピーする必要があります一時的な非表示の入力フィールドを再度削除してください。
しかし、何もコピーしません。
let copyValue = document.getElementById(args.target).dataset.password;
document.body.insertAdjacentHTML('beforeend', `<input hidden id="temp-copy" value="${copyValue}">`);
let copyText = document.getElementById('temp-copy');
copyText.select();
document.execCommand("copy");
copyText.remove();
yeaaただし、私が知っている限り、p htmltagでselectメソッドを呼び出すことはできません。私はそれを試みた、それはエラーをスローするcopyText.selectは関数ではありません –
@IlarioEnglerその場合 - https://stackoverflow.com/a/25456308/1401662 – vadim
ありがとう私もそれを見つけました。しかし、テキストはデータ属性の中にあります –