0

私は次のコードを書きました:

function copy() {
  if(window.clipboardData) {
    window.clipboardData.clearData();
    window.clipboardData.setData("Text", document.getElementById('txtacpy').value);
  } 
}

function paste() {
  if(window.clipboardData) {   
    document.getElementById('txtapaste').value = window.clipboardData.getData("Text");
  } 
}

CodeMirrorエディターに焦点が当てられている場合、私は次のように呼びます。

paste();

しかし、何も起こりません!ブラウザはモバイルSafariです。問題を解決する方法は?

4

1 に答える 1

2

この機能は、Webページにクリップボードへのアクセスを許可しない場合のセキュリティの問題のため、ほとんどのブラウザでサポートされていません。これはモバイルSafariだけではありません。ほとんどのブラウザ(ChromeやFirefoxなど)ではサポートされていません。

一部の人々は、クリップボードへのコピーを許可するzClip / ZeroClipboardと呼ばれるFlashの回避策を使用しますが、Flashオブジェクトを直接ユーザーがクリックすることによってのみ可能になります。これは明らかにモバイルサファリのオプションではありません。

ページ内でデータを移動しようとしているだけの場合は、システムクリップボードを使用する必要はありません。データ用の独自の保持領域(javascript変数)を作成し、コピー時にそこにデータを配置できます。貼り付け時にそこから取得します。次に、通常のDOM関数(コピー/貼り付け関数ではない)を使用して、フィールドからデータを取得するか、データをフィールドに配置します。

于 2012-11-03T17:27:17.867 に答える