3

HTML ページに script タグを入れれば動きますが、ZeroClipboard ライブラリが含まれている外部ページを読み込むと動きません。オブジェクトが作成され、正しい要素上にありますが、イベントは発生せず、クリップボードのテキストもコピーされません。例:

var ZeroClipboard = defineZClip(); // This is a scoped function that has the zclip library in it

window.onload = function () {

    console.log("doc loaded"); // This fires

    var button = document.getElementById('z-button');
    var clip = new ZeroClipboard(button, {
        moviePath: 'ZeroClipboard.swf'
    });
    clip.on('load', function () {
        console.log("loaded"); // This never fires
    })

};

これを回避するには、ZeroClipboard を初期化するスクリプト タグの内容を含むスクリプト タグを動的に挿入しますが、スクリプトから初期化すると機能しません。そのようです:

var ZeroClipboard = defineZClip();
window.ZeroClipboard = ZeroClipboard;

window.onZeroLoad = function (clip) {
    console.log("zero loaded"); // This fires
};

var scriptText = 'window.onload = function () { console.log("window loaded");var button = document.getElementById("z-button");'
            +' var clip = new ZeroClipboard(button, {moviePath: "ZeroClipboard.swf"});'
            +' clip.on("load", window.onZeroLoad );'
            +'};'
var script = document.createElement('script');
script.innerHTML = scriptText;
document.head.appendChild(script);

ただし、これにはいくつかの明確な欠点があります。たとえば、ZeroClipboard にはウィンドウからアクセスする必要があるため、すべてをスコープするという目的が無効になります。さらに、読むのははるかに困難です。

4

0 に答える 0