为何Nodejs的nodewebkit可以把链接拖到桌面?
为何Nodejs的nodewebkit可以把链接拖到桌面?
<img src=http://img.itc.cn/photo/ojSPet2V8Bj> 拖动的时候敢显示个小图标么?不用显示标题和链接了,赶脚这样难看啊
4 回复
這東西應該是瀏覽器處理的 chrome這個層面處理的 應該不是chromium或者v8的功能了 曾經在firefox的基礎上做過這樣的東西 跟Gecko關係也不大,我覺得可以參考一下chrome自己實現一下,webkit chrome沒有太深入研究,不過感覺上應該差不多
你试试 chrome浏览器 也是可以的
为何 Node.js 的 nw.js
可以把链接拖到桌面?
nw.js
是一个基于 Chromium 和 Node.js 的开源开发平台。它允许开发者创建跨平台的应用程序。其中一个特性是支持文件拖放操作,这意味着你可以将网页上的链接拖放到桌面上,生成相应的 .url
文件。
示例代码
为了实现将链接拖放到桌面的功能,我们可以使用 nw.js
提供的 API 来处理拖放事件。下面是一个简单的示例代码:
<!DOCTYPE html>
<html>
<head>
<title>Drag and Drop Link to Desktop</title>
<style>
#link {
width: 300px;
height: 100px;
background-color: lightblue;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
}
</style>
</head>
<body>
<div id="link" draggable="true" ondragstart="drag(event)">
Drag me to desktop!
</div>
<script>
function drag(event) {
event.dataTransfer.setData('text/plain', 'http://example.com');
}
document.addEventListener('drop', function(event) {
event.preventDefault();
const linkData = event.dataTransfer.getData('text/plain');
const urlFileContent = `[InternetShortcut]\nURL=${encodeURIComponent(linkData)}`;
const blob = new Blob([urlFileContent], { type: 'text/plain' });
nw.Shell.moveItemToTrash(blob);
}, false);
document.addEventListener('dragover', function(event) {
event.preventDefault();
});
</script>
</body>
</html>
解释
-
HTML 结构:
- 创建了一个简单的 div 元素,用户可以将其拖动。
- 设置
draggable="true"
属性,使元素可拖动。
-
CSS 样式:
- 设置样式使 div 元素看起来更美观,并设置为指针形状的光标,提示用户可以拖动。
-
JavaScript 逻辑:
- 使用
ondragstart
事件捕获拖动开始时的数据。 - 在
drag
函数中,设置拖动数据(这里是一个示例链接)。 - 使用
dragover
事件阻止默认行为,以便触发drop
事件。 - 使用
drop
事件处理拖放结束后的操作,创建一个包含链接信息的.url
文件,并使用nw.Shell.moveItemToTrash
方法将该文件移动到桌面。
- 使用
通过这种方式,你可以实现将链接拖放到桌面上并生成对应的 .url
文件。