5

もともと、この投稿は、私の Chrome 拡張機能で使用するために、ZeroClipboard を Web ページに挿入しようとする私の試みに関するものでしたが、問題を特定するための一見無駄な試みで、シナリオを何度も何度も馬鹿にしましたが、まだできません。それを機能させます。

ZeroClipboard自身の GitHub にある実際の文書化された「最小限の例」を機能させるのに苦労しています (確かに、ソースを実際に HTML5 で有効になるように変更しましたが、正確なオリジナルも機能しませんでした)。test.htmlアーカイブに含まれている でさえtar.gz動作しません!

「最小限の例」: コード

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
    </head>
    <body>
        <input type="button" id="d_clip_button" data-clipboard-text="Copy Me!" value="Copy To Clipboard" />
        <script src="ZeroClipboard.js"></script>
        <script>
            var clip = new ZeroClipboard( document.getElementById('d_clip_button') );
        </script>
    </body>
</html>

「最小限の例」: コンソール出力

Uncaught TypeError: object is not a function  index.html:11

情報

  • zeroclipboard-1.0.7.tar.gzアーカイブの内容全体が と同じディレクトリにありindex.htmlます。
  • ZeroClipboard.jsファイルは破損していないか、不完全ではなく、正しく読み込まれています。
  • Chrome v24.0.1312.52 を使用しています

 

ここで本当に明らかな何かが欠けているか、ZeroClipboardのドキュメント/機能がひどいです。

4

5 に答える 5

2

私が今見つけたもの:

それは一致しませんでした。この質問の元のポスターと同様のエラーがあります。

GitHub の例を使用した後、成功しました。

結論:

例とGoogle Code からのダウンロードの両方を使用するか、(私が好む) 例GitHub からのダウンロードの両方を使用します。

于 2013-01-24T15:12:29.733 に答える
1

swf ファイルへのパスを指定する必要があります。

 var clip = new ZeroClipboard( document.getElementById('d_clip_button'),{moviePath: "/path/ZeroClipboard.swf"} );
于 2013-04-10T12:28:07.803 に答える
0

私にとっての問題は、可変モジュールが私が使用するフレームワークによってすでに定義されており、ZeroClipboardのように使用することを意図していないことでした。実際、ZeroClipboard.jsファイルの最後を見ると、次のように表示されます。

  if (typeof module !== "undefined") {
    module.exports = ZeroClipboard;
  } else if (typeof define === "function" && define.amd) {
    define(function() {
      return ZeroClipboard;
    });
  } else {
    window.ZeroClipboard = ZeroClipboard;
  }

問題を修正するために、これを次のコードに置き換えました。

window.ZeroClipboard = ZeroClipboard;
于 2013-02-21T10:34:19.853 に答える
0

2.2.1-dev バージョンを試してみてください 。また、 new $.fn.dataTable.TableTools(...) が推奨される形式になっていることも指摘しておきます。TableTools グローバルは 2.2.x のままですが、2.3 以降では削除される予定です。

于 2015-07-02T12:12:22.463 に答える
-1

外部スクリプトをロードする場合、SCRIPT要素をページ本文に挿入しても、スクリプトはすぐにロードおよび実行されません。すぐappendChildに戻り、現在のスクリプトの実行がすべての関数から戻り、アイドル状態になったにスクリプトがロードされます。

このため、SCRIPT要素のonloadプロパティを使用して、外部スクリプトが読み込まれるとコードを実行できます。

function inject_zeroClipboard(){
    var path_Root_zeroClipboard = chrome.extension.getURL("plugins/zeroClipboard");
    var element_Head = document.getElementsByTagName('head')[0];
    var element_zeroClipboard = document.createElement("script");
    element_zeroClipboard.src = path_Root_zeroClipboard + "/ZeroClipboard.js";

    element_zeroClipboard.onload = function() {
        ZeroClipboard.setMoviePath(path_Root_zeroClipboard + "/ZeroClipboard10.swf");
        var clip = new ZeroClipboard.Client();
        clip.glue("element_Example");
        clip.addEventListener("click", function(){
            clip.setText(data_Example);
        });
    };

    element_Head.appendChild(element_zeroClipboard);
}
于 2012-10-26T18:24:09.187 に答える