AdobeAIR剪贴板检测

AdobeAIR剪贴板检测,air,adobe,clipboard,Air,Adobe,Clipboard,在AdobeAIR中创建桌面应用程序的美妙之处在于,我仍然可以使用我的web开发技能来实现这一点 出于某种原因,我在检测剪贴板中的内容并将其显示在我的应用程序中时遇到了一个小问题 这是我的密码: <body> <div id="infoDiv"></div> <script> function everysecond() { setInterval("checkClipBoard()",1000); } funct

在AdobeAIR中创建桌面应用程序的美妙之处在于,我仍然可以使用我的web开发技能来实现这一点

出于某种原因,我在检测剪贴板中的内容并将其显示在我的应用程序中时遇到了一个小问题

这是我的密码:

<body>
<div id="infoDiv"></div>

<script>
function everysecond() {
    setInterval("checkClipBoard()",1000);       
}   


function checkClipBoard(){

    if(air.Clipboard.generalClipboard.hasFormat("text/plain")){ 
        var text = air.Clipboard.generalClipboard.getData("text/plain"); 
    }else{
        var text = "nothing in clipboard"; 
    }

    $("#infoDiv").html(text);

}

everysecond();
</script>
</body>

函数everysecond(){
setInterval(“checkClipBoard()”,1000);
}   
函数checkClipBoard(){
if(air.Clipboard.generalClipboard.hasFormat(“text/plain”){
var text=air.Clipboard.generalClipboard.getData(“text/plain”);
}否则{
var text=“剪贴板中无任何内容”;
}
$(“#infoDiv”).html(文本);
}
每秒钟();
无论我的应用程序是否处于焦点,它似乎都不会检测到我复制到剪贴板的任何内容(Ctrl+C)


有人看到我的问题了吗?

剪贴板轮询是一种可怕的黑客行为。您将与(合法)打开剪贴板的其他应用程序发生冲突。因此,当您的应用程序运行时,您将导致用户尝试复制/粘贴数据的其他应用程序出现故障(可能会崩溃)。您是否见过“无法打开剪贴板”错误?是这样的事情导致了他们。我不知道在Air中您可以使用哪些功能,但是如果没有剪贴板通知功能(例如WM_DrawClipboard messages),那么您可能应该重新考虑您在这里尝试做什么的需要

这是最好的说明:

“程序不应将数据传输到我们的剪贴板 没有用户的明确指示。”-Charles Petzold, 编程Windows 3.1,微软出版社,1992年

从:


如果您的HTML内容在应用程序沙箱之外,这可能就是问题所在。

不要将字符串传递给
setTimeout
Only code running in the application sandbox can access the system clipboard 
directly. In non-application HTML content, you can only access the clipboard 
through the clipboardData property of an event object dispatched by one of 
the HTML copy or paste events.