Safari 5.1 破坏了 HTML 原生拖放功能?

2024-01-25

昨晚,我想我应该做一个快速项目来演示 HTML5 功能并尝试一些东西。然而,我似乎不知道如何让拖放在 Safari 中工作,而它在 Chrome 和 Firefox 中完美工作。更准确地说,当您尝试将网站内的图像拖到放置区域时,Safari 中似乎不会触发放置事件。同时,当您从桌面拖放文件时,它会触发。

我不太确定,但我很确定当我在工作中尝试相同的脚本时(我有 Safari 5.0.2 等),它触发了 drop 事件(明天要检查一下以确保)并给出我预期的与 FileReader 相关的错误。但是,当我刚刚在自己的 PC 上安装 Safari 5.1 时,我只会收到拖移、输入和离开事件(如果文件被拖到浏览器中,也会出现拖放事件)。

我已经在谷歌上搜索了一段时间,似乎没有找到一个在 Safari 5.1 中实际工作的拖放示例。甚至 Safari 的开发中心的样本 http://developer.apple.com/library/mac/#documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/DragAndDrop.html不起作用,更不用说html5demo.com 1 http://html5demos.com/drag and html5demo.com 2 http://html5demos.com/drag-anything。这让我思考 Safari 是否有 bug,或者他们可能实施了一些未在开发中心(最后更新于 2009 年)中反映的强制性内容。

我试图修复的脚本位于my site http://www.ut.ee/~vahurr/memebuilder(对不起,伙计们,没有问题的具体代码可以发布,因为它似乎在其他地方也被破坏了)。

附言!当我拼命尝试修复 Safari 中的拖放功能时,我可能在自己的网站中引入了一些错误,但我现在太累了,无法修复它们。

UPDATE:刚刚在工作中确认 drop 事件确实会在 Mac OS X 上的 Safari 5.0.2 中触发。

更新2:还确认在 Win 7 上使用 Safari 5.0.6 一切正常,而 5.1 则失败的同一台计算机


使用 Safari 5.1.7 Mac 进行测试:

为了看到drop事件火灾,你必须处理dragover事件和呼叫event.preventDefault().

这是我找到答案的(非常有趣的)讨论:

http://www.quirksmode.org/blog/archives/2009/09/the_html5_drag.html http://www.quirksmode.org/blog/archives/2009/09/the_html5_drag.html

我不知道这是否真的解决了问题,因为提问者的网站(至少截至今天)就是这样做的。它在我的机器上运行良好(HTML5 演示页面也是如此)。但这可能会帮助那些不知道这个相当不直观的实现细节的人来解决这个问题。

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

Safari 5.1 破坏了 HTML 原生拖放功能? 的相关文章

随机推荐