最初,这篇文章是关于我尝试将ZeroClipboard注入网页并由我的Chrome扩展程序使用,但是我已经愚弄了这个场景,看似徒劳无益的尝试来识别问题而且我仍然无法让它发挥作用。
我甚至难以在ZeroClipboard自己的GitHub上获得the actual, documented "Minimal Example“工作(诚然,我已经将源代码修改为实际上是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
archive的全部内容与index.html
位于同一目录中。ZeroClipboard.js
文件未损坏/不完整且正确加载。
要么我在这里遗漏了一些非常明显的东西,要么ZeroClipboard的文档/功能非常糟糕。
答案 0 :(得分:2)
我刚发现的事情:
那不匹配。我有一个类似的错误,而不是这个问题的原始海报。
在我使用the example from GitHub后,我成功了。
结论:
使用Google代码中的示例和下载或(我更喜欢),从GitHub下载示例和。
答案 1 :(得分:1)
您需要指定swf文件的路径:
var clip = new ZeroClipboard( document.getElementById('d_clip_button'),{moviePath: "/path/ZeroClipboard.swf"} );
答案 2 :(得分: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;
答案 3 :(得分:0)
试用2.2.1-dev版本:http://datatables.net/download/build/dataTables.tableTools.nightly.js?_=60133663e907c73303e914416ea258d8 我认为应该在那里解决。 我还要指出新的$ .fn.dataTable.TableTools(...)现在是首选形式。 TableTools全局仍在2.2.x中,但将在2.3 +中删除。
答案 4 :(得分:-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);
}