Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript CF_HDROP实现_Javascript - Fatal编程技术网

Javascript CF_HDROP实现

Javascript CF_HDROP实现,javascript,Javascript,是否可以实现从浏览器到另一个程序的拖放操作?我希望使用JavaScript网站作为一种方式,在本地服务器上为另一个程序组织、搜索和提供内容目录 而我已经找到了一种从浏览器拖放到桌面或其他文件夹的方法。我还没有找到一种让它充当CF_HDROP剪贴板格式的方法。我的直觉是,这不可能在浏览器中实现JavaScript的沙盒,但我相信比我聪明的人可以证实这一点。过去几天我也在寻找同样的问题,有一些函数可以使用setData()函数处理剪贴板数据。当你们想在浏览器中输入一些东西时,它工作得很好,但当我尝试

是否可以实现从浏览器到另一个程序的拖放操作?我希望使用JavaScript网站作为一种方式,在本地服务器上为另一个程序组织、搜索和提供内容目录


而我已经找到了一种从浏览器拖放到桌面或其他文件夹的方法。我还没有找到一种让它充当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>