动态加载ZeroClipboard

时间:2013-06-24 18:52:25

标签: javascript ajax zeroclipboard

使用ZeroClipboard - 成功调用'load'回调,但点击'copy-button'元素不会导致'complete'回调触发。

JS

var script = document.createElement('script'), loaded;
script.setAttribute('src', "/static/ZeroClipboard.js");
script.onreadystatechange = script.onload = function() {
    if (!loaded) {
        console.log("Executing ZeroClipboard load callback");

        var clip = new ZeroClipboard(
            document.getElementById('copy-button'),
            {moviePath: '/static/ZeroClipboard.swf',
             allowScriptAccess: "always"}  // allow cross-domain swf load
            );

        clip.on('complete', function(client, args) {
            console.log('ZeroClipboard: copied text to clipboard: ' + args.text );
        });
        clip.on('load', function(client) {
            console.log('ZeroClipboard: clip loaded');
        });
    }
    loaded = true;
};
document.getElementsByTagName('head')[0].appendChild(script);

HTML

<button class="embed-copy" id="copy-button" data-clipboard-text="some old copied text">Copy</button>

如何动态加载ZeroClipboard并成功触发'complete'事件(将文本复制到剪贴板)?

1 个答案:

答案 0 :(得分:0)

上述代码中没有任何内容是错误的。事实证明,ZeroClipboard为捕获点击而创建的不可见的swf正在成功创建,但处于错误的位置。这是因为按钮通过css转换定位,并且是bug in ZeroClipboard itself。希望这个拉动请求很快就会合并。

目前,我只是手动将the patch(8行左右)应用到我正在使用的ZeroClipboard版本。

供参考,这会影响ZeroClipboard v1.2.0-beta.1