ZeroClipboard在加载的js文件中不起作用

时间:2013-03-09 21:38:36

标签: zeroclipboard

如果我在HTML页面中放置一个脚本标记,它将会起作用,但是当我加载包含其中的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必须可以通过窗口访问。此外,它更难以阅读和所有这些。

0 个答案:

没有答案