HTML5 拖放行为

2023-12-20

我广泛使用了 HTML5 原生拖放功能,它几乎完全可以正常运行,只有一个小例外。

当任何东西被拖过页面时,我试图突出显示我的拖放区。我最初尝试通过将 jQuery 侦听器放在文档正文上来实现此目的,如下所示:

$("body").live('dragover',function(event){lightdz(event)});
$("body").live('dragexit dragleave drop',function(event){dimdz(event)});

使用 lightdz() 和 dimdz() 更改页面上所有拖放区的背景颜色样式属性,使它们脱颖而出。这不起作用。每当拖动的对象进入页面上的子元素(例如 div 容器)时,侦听器都会将其标记为 Dragleave 事件并使放置区变暗。

我通过将侦听器应用于页面上的所有可见元素(而不仅仅是正文)来解决这个问题。当拖拽区穿过一个元素和另一个元素之间的边界时,偶尔会出现轻微可见的闪烁,但看起来不错。

无论如何,现在我已经更改了 lightdz() 和 dimdz() ,以便它们将快速 jQuery fadeTo() 动画应用于所有非拖放区。这看起来awesome当它工作时,让用户非常清楚他们可以和不能把东西放在上面。问题在于,当它在元素边界之间传递时,它会应用淡入淡出动画。这比背景颜色偶尔的闪烁要明显得多,特别是因为如果将对象非常快速地拖动到多个边界上,它将对动画进行排队并使页面反复淡入和淡出。

即使我不关心 fadeTo() 动画,而只是更改不透明度,它也比背景颜色闪烁更明显,因为整个页面发生了变化,而不仅仅是 dropzone 元素发生了变化。

有没有什么方法可以将整个页面作为单个元素引用,以用于 Dragover 和 Dragleave 事件?如果做不到这一点,有什么方法可以检测发生在浏览器窗口之外的掉落吗?如果我跳过 Dragleave 事件,它看起来不错,但如果将任何对象拖到浏览器窗口上然后放到窗口之外,整个页面就会保持褪色。


我真的为这件事如此简单而感到尴尬。

$("*:visible").live('dragenter dragover',function(event){lightdz(event)});

$("#page").live('dragleave dragexit',function(event)
{
    if(event.pageX == "0")
       dimdz(event);
});

$("*:visible").live('drop',function(event){dimdz(event)});

#page 是一个页面范围的容器。如果 Dragleave 事件将拖动的对象移出浏览器窗口,则 event.pageX 的值为 0。如果它发生在其他地方,则它将具有非零值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTML5 拖放行为 的相关文章

随机推荐

  • 从github导入ADT Eclipse中的android项目

    我正在尝试将 android 项目从 github 导入到 ADT Eclipse 中 但当我克隆它时 它在存储库中找不到任何项目 该仓库显然是一个android应用程序项目 从源代码来看 但没有找到可以导入的项目 我的步骤如下 在 包资源
  • 在函数重载中将右值引用实现为参数

    我已经询问过有关代码审查和软件工程的问题 但该主题不适合该网站 因此我在这里询问希望这不是基于意见的 我是一名 老派 C 开发人员 我已经停留在 C 2003 但现在我已经阅读了一些有关现代 C 11 17 的书籍 并且正在重写我的一些库
  • Python3.10源码venv已经改变

    我在个人仓库上做了一些 python leetcode 在我将 Kubuntu 升级到 22 04 后 我意识到当前的 venv 不起作用 我想我需要重新创建 venv 安装了 python3 10 venv 但我无法获取并激活它 事实上
  • Apache Spark:map、flatMap、mapPartitions、mapPartitionsWithIndex 的比较

    Apache Spark map flatMap mapPartitions mapPartitionsWithIndex 的比较 欢迎提出建议 以提高我们的知识 地图 函数 它有什么作用 通过提供的函数传递 RDD 的每个元素 即功能 平
  • 优化运行时间:改变igraph中边的权重需要很长时间。有没有办法优化它?

    我正在从 osmar 对象构建的 igraph 中搜索一组边 并希望更改这些边的权重 由于我的图表很大 因此这项任务需要很长时间 由于我在循环中运行此函数 因此运行时间变得更大 有什么办法可以优化这个吗 这是代码 library osmar
  • 使用后如何从 GPU 清理和卸载 WebGL 画布上下文?

    如何清理 WebGL 上下文程序并从 GPU 和 dom element 卸载程序 缓冲区和所有内容 我想确保我们没有乱扔垃圾 另外 如果可能的话 重用画布会很好 而且我不知道是否会这样 2d or webgl语境 您可以丢失对 gl 上下
  • 在 C# 中从 Msi 中的自定义操作强制重新启动

    我们如何在 C 自定义操作中提示安装后重新启动计算机 我们使用 VS 2005 的安装项目进行安装 并且需要以编程方式决定提示重新启动 因此不会在每次安装时发生 只是在某些安装上发生 更新 我们首先正在寻找已经内置于 MSI 自定义操作系统
  • WPF 中的自定义附加事件

    我可能在这里用错了术语 但我想我正在尝试创建一个附加事件 在 Surface SDK 中 您可以执行以下操作
  • 谷歌浏览器扩展制作中的内容安全策略错误

    我正在制作一个 chrome 扩展 它将在新选项卡中打开页面上的所有链接 这是我的代码文件 清单 json name A browser action which changes its icon when clicked version
  • 如何禁用 NGINX 文件日志记录

    我对 Nginx 很陌生 注意到每当我在本地访问我的服务器时 它都会记录 我想知道 我需要创建哪些配置文件 以及将它们放在哪里 以及我必须在其中放入什么来禁用该行为 我试图防止喷出 我正在 aws 上运行我的应用程序 并收到许多格式为 17
  • 无法使用“角色”包通过流星向用户添加角色

    我正在尝试使用 Atmosphere 上提供的 角色 包 但我无法让它与 Accounts onCreateUser 一起使用 我可以在 github 上获取示例 当我注册用户时 我想向他们添加角色 当我测试角色是否已分配时 它没有选择它
  • 卡片视图未显示

    我正在通过 android 中的回收器视图实现卡片视图 但我的卡片视图没有显示 我正在使用自定义适配器将数据填充到卡片视图 我已经尝试了所有方法 但卡片视图没有显示 MainActivity java public class MainAc
  • 如何从 pandas 中的字符串中提取前 8 个字符

    我在数据框中有一列 我正在尝试从字符串中提取 8 位数字 我该怎么做 Input Shipment ID 20180504 S 20000 20180514 S 20537 20180514 S 20541 20180514 S 20644
  • 限制拖放面板中的最大元素数

    我的网站上有一个可排序面板 jQuery UI 但需要将每列中的元素数量限制为最多 12 个 我尝试了一些方法 但似乎无法让它发挥作用 我需要看看 i 是否为 12 或更大 如果是 请不要更新 但我似乎做不到 有人有任何建议或可以推动我正确
  • 如何从脚本的纯色图像获取十六进制颜色代码?

    我正在编写一个脚本 将 Linux 机器上的背景更改为一组仅包含纯色的图像中的随机图像 我想做的是扩展此脚本以相应地主题某些应用程序 主要是终端应用程序 至少更改文本颜色 可能从深色背景切换到浅色背景等 我想知道我必须有哪些选项获取图像中颜
  • 谷歌天气 API 链接需要人工身份验证

    我使用开发了一个天气应用程序谷歌天气 http www google com ig api weather lincoln应用程序编程接口 但从今天起它停止工作了 当我尝试通过浏览器使用位置访问天气 API 时 它要求进行人工身份验证 当我
  • 当按钮大小改变时增加按钮字体大小

    我有一个 Qt 应用程序 其主窗口有五个按垂直顺序排列的按钮 它们都有相同的尺寸 我想做的就是当应用程序全屏显示时增加按钮标签的字体大小 我真的很感激一个不需要太多代码的解决方案 希望这是可以在 Qt Designer 中完成的事情 但我找
  • 将日期和时间转换为 Unix 时间戳

    我像这样显示日期和时间 2009 年 11 月 24 日 17 57 35 我想将它转换为 unix 时间戳 这样我就可以轻松地操作它 我需要使用正则表达式来匹配字符串的每个部分 然后从中计算出 unix 时间戳 我对正则表达式很糟糕 但我
  • 使用 Java 读取 HTML+JavaScript

    我可以通过http读取HTML内容 例如 http www foo com http www foo com 使用 Java 使用 URL 和 BufferedReader 类 然而 其中一些包含 JavaScript 我当前的应用程序无法
  • HTML5 拖放行为

    我广泛使用了 HTML5 原生拖放功能 它几乎完全可以正常运行 只有一个小例外 当任何东西被拖过页面时 我试图突出显示我的拖放区 我最初尝试通过将 jQuery 侦听器放在文档正文上来实现此目的 如下所示 body live dragove