ロッカーサービス - クリップボードにコピー

テーブルデータをクリップボードにコピーする機能が必要です。ロッカーが有効になっていると私はアクセスできません。

document.queryCommandSupported('copy')
document.execCommand('copy');

この機能を他にどのようにして実現できますか。 Flashは稲妻で動作しますか。そうは思わない。

2
これらの機能は、LockerServiceが有効になった状態で公開されています。 APIを使用して問題が発生した場合はお知らせください。
追加された 著者 Tibor,

4 答え

私も同じ問題に直面しています。 Salesforce CLIを使用してコードをスキャンする場合document.execCommand( 'copy');というようになります。安全な文書機能ではありません。

考えられる唯一の解決策は、プロンプト(ウィンドウ)を使用することです。プロンプトはサポートされていません)選択されたテキストとフォーカスされた入力を表示する入力ボックスがあります。 「コピーするにはCtrl + Cを押してください」という入力テキストの上にメッセージが表示され、「Ctrl + C」を押すとプロンプトが閉じます。

私たちはすでに私たちのパッケージのためのプロンプトを実行しました、しかし私はこの解決策のUXがどれほど良いものになるかについてよくわかりません。

感想を聞かせてください。

PS:ui:copyはSalesforceではサポートされていません。サポートされているAPIについては    https://your-org-domain.lightning.force.com/auradocs <にアクセスしてください。/a>

私がやろうとした

var doc = document;
doc.queryCommandSupported('copy');
doc.execCommand('copy');

Lightning CLIエラーが発生せず、正常に実行されます。 この場合、これは機能しますか。

1
追加された

auraフレームワークには、ユーザーがコンテンツをクリップボードにコピーしたときに処理できるui:copyイベントがあります。

See here: http://documentation.auraframework.org/auradocs#reference?descriptor=ui:copy&defType=event

0
追加された
ありがとう私はそれを見なかったけれども私のユースケースは少し違う。ボタンクリックでクリップボードへのコピーをプログラム的に実行する必要があります。最終的に私も同様にコンテンツをcsvファイルとして保存したいです。一歩ずつ...
追加された 著者 jaketmp,
@ user682217もしあなたがデータを実用的に保存したいならそれをサーバーサイドアクションに送ってあそこでCSVを生成してください。
追加された 著者 Daniel,
私はそれがもうサポートされていないと思います、私はuiを見つけることができませんでした:コピー
追加された 著者 efirat,

私はこの問題を隠しtextarea要素を使って解決しました。

modalBody is the text that will be copied.

<div class="slds-modal__content slds-p-around_medium" id="modal-content-id-1">
    

{!v.modalBody}

</div>

コントローラ上:

copy : function(component, event, helper) {
    var holdtxt = document.getElementById("holdtext");
    holdtxt.select();
    document.queryCommandSupported('copy');
    document.execCommand('copy');

    var source = event.getSource();
    source.set('v.label','COPIED!');

    setTimeout(function(){
        component.set("v.showModal", false);
    }, 1500);
}
0
追加された