Javascript CF_HDROP实现
是否可以实现从浏览器到另一个程序的拖放操作?我希望使用JavaScript网站作为一种方式,在本地服务器上为另一个程序组织、搜索和提供内容目录Javascript CF_HDROP实现,javascript,Javascript,是否可以实现从浏览器到另一个程序的拖放操作?我希望使用JavaScript网站作为一种方式,在本地服务器上为另一个程序组织、搜索和提供内容目录 而我已经找到了一种从浏览器拖放到桌面或其他文件夹的方法。我还没有找到一种让它充当CF_HDROP剪贴板格式的方法。我的直觉是,这不可能在浏览器中实现JavaScript的沙盒,但我相信比我聪明的人可以证实这一点。过去几天我也在寻找同样的问题,有一些函数可以使用setData()函数处理剪贴板数据。当你们想在浏览器中输入一些东西时,它工作得很好,但当我尝试
而我已经找到了一种从浏览器拖放到桌面或其他文件夹的方法。我还没有找到一种让它充当CF_HDROP剪贴板格式的方法。我的直觉是,这不可能在浏览器中实现JavaScript的沙盒,但我相信比我聪明的人可以证实这一点。过去几天我也在寻找同样的问题,有一些函数可以使用setData()函数处理剪贴板数据。当你们想在浏览器中输入一些东西时,它工作得很好,但当我尝试时,setData在每个浏览器中的工作方式都不同,很可能是因为安全原因 我用于检查剪贴板数据,并使用以下html/js:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
</head>
<body>
<div id="drag1" draggable="true">
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</div>
</body>
</html>
<script>
document.getElementById( 'drag1' ).addEventListener( 'dragstart', function drag( ev ) {
// Create data transfer facade so we can set custom data types (like 'commet').
//ev.dataTransfer.setData("text/plain", ev.target.id);
ev.dataTransfer.setData("FileNameW", "\\fileserver\SampleVideo\Test.avi" );
ev.dataTransfer.setData( "SomeData", "true" );
//ev.dataTransfer.setData("text/html", "<p>Example paragraph</p>");
//ev.dataTransfer.setData("text/uri-list", "http://developer.mozilla.org");
// Some text need to be set, otherwise drop event will not be fired.
},false);
</script>
欢迎来到nginx!
身体{
宽度:35em;
保证金:0自动;
字体系列:Tahoma、Verdana、Arial、无衬线字体;
}
欢迎来到nginx!
如果您看到此页面,则nginx web服务器已成功安装,并且
工作需要进一步配置
有关在线文档和支持,请参阅
.
商业支持可从以下网址获得:
感谢您使用nginx
document.getElementById('drag1')。addEventListener('dragstart',函数拖动(ev){
//创建数据传输外观,以便我们可以设置自定义数据类型(如“commet”)。
//ev.dataTransfer.setData(“文本/普通”,ev.target.id);
ev.dataTransfer.setData(“FileNameW”,“fileserver\SampleVideo\Test.avi”);
ev.dataTransfer.setData(“SomeData”、“true”);
//ev.dataTransfer.setData(“text/html”,“示例段落””;
//ev.dataTransfer.setData(“文本/uri列表”http://developer.mozilla.org");
//需要设置一些文本,否则将不会触发drop事件。
},假);
在检查Chrome中的拖放时,我看到我的所有数据都变成了“ChromiumWeb自定义mime数据格式”,而在Firefox中,数据是按预期设置的。IE11根本没有设置任何数据(也没有设置不可信的数据)
从Chrome中剪切出来:
从Firefox中剪切出来:
由于Firefox似乎支持在javascript中设置CF_HDROP,所以我尝试添加本地文件的路径,以便在将其拖到桌面时将文件复制到桌面。我无法使它工作
在考虑如何在Chrome上实现这一点时,我在中找到了一个示例脚本
下载拖出测试
功能手柄启动(evt)
{
var url=document.getElementById(“downloadUrl”).value;
如果(url.length>0){
var parts=url.split(“/”);
setData(“下载url”,“应用程序/八位字节流:“+parts[parts.length-1]+”:“+url”);
}
}
函数init()
{
var download=document.getElementById(“下载”);
download.draggable=true;
download.ondragstart=handleDragStart;
}
输入文件URL:
将此框从浏览器中拖出以下载上面的文件
当我在chrome上测试它时,它以某种方式将downloadUrl转换为CF_HDROP并在链接中下载文件。但是它只在chromium中工作,我试图找到它的文档或使用本地文件或自定义数据的方法,但还是失败了。您指的是:Shell剪贴板格式用于识别通过剪贴板传输的Shell数据的类型。正确,我指的是Shell剪贴板格式。我应该包括那个链接。顺便说一句,我的第二个脚本与此示例相同:此功能很可能添加到chromium中,以启用从gmail到桌面的dragout附件。
<html>
<head>
<title>Download drag-out test</title>
<script type="text/javascript">
function handleDragStart(evt)
{
var url = document.getElementById("downloadUrl").value;
if (url.length > 0) {
var parts = url.split("/");
evt.dataTransfer.setData("DownloadURL", "application/octet-stream:" + parts[parts.length - 1] + ":" + url);
}
}
function init()
{
var download = document.getElementById("download");
download.draggable = true;
download.ondragstart = handleDragStart;
}
</script>
</head>
<body onload="init()">
Enter the file URL: <input id="downloadUrl" type="text" style="width: 500px;" value="http://www.google.com/favicon.ico" /><br />
<br />
<div id="download" style="width: 400px; border: 1px solid #000; background: #ccc; padding: 10px;">Drag this box out of the browser to download the file above</div>
</body>
</html>