zat*_*ata 18 javascript safari html5 drag-and-drop
昨晚,我想我会做一个快速的项目来演示HTML5功能并试一试.但是,我似乎无法弄清楚如何在Safari中拖放工作,而它在Chrome和Firefox中完美运行.更准确地说,当您尝试将网站内的图像拖动到放置区域时,似乎不会在Safari中触发放置事件.同时,当您从桌面拖放文件时,它会触发.
我不太确定,但我很确定当我在工作中尝试相同的脚本(我有Safari 5.0.2等)时,它会触发掉落事件(明天要检查它以确定)并给出了我与预期的FileReader相关的错误.但是当我在我自己的PC上安装Safari 5.1时,我只会得到dragover,进入和离开事件(如果文件被拖入浏览器,也会掉线).
我已经谷歌搜索了一段时间,似乎没有找到一个实际上在Safari 5.1中工作的拖放的例子.甚至Safari的开发中心的样本也不起作用,更不用说html5demo.com 1和html5demo.com 2.这让我想到Safari是否有错误,或者他们已经实现了一些强制性的东西,这些东西没有在开发中心反映出来(最后一次更新于2009年).
我正在尝试修复的脚本是在我的网站上(对不起,没有问题的特定代码要发布,因为它似乎也在其他地方被破坏).
PS!我可能已经在我自己的网站上引入了一些错误,同时拼命想要解决Safari中的拖放问题,但我现在太累了,无法修复它们.
更新:刚刚在工作中确认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
我不知道这是否真的解决了这个问题,因为提问者的网站(至少截至今天)是这样做的.它在我的机器上工作正常(与HTML5演示页面一样).但这可能有助于有人在这个问题上遇到这个问题并且不了解这个相当不直观的实现细节.
我在Windows 7 PC上使用Safari 5.1.5(7534.55.3),这是我刚刚安装的,之前没有安装Safari,我也无法使用任何在线HTML5拖放演示工作.
我正在开发一个带有拖放功能的项目,Modernizr告诉我,我很高兴使用Safari(Modernizr.draganddrop == true),但是当我实际丢弃项目时,drop事件不会触发.
我添加了警报调试,没有.
我的测试显示,Windows 7 PC drop事件中的Safari 5.1.5(7534.55.3)已损坏.所有其他拖拽事件似乎都有效:dragstart,dragend,dragenter,dragleave,dragover.
只是为了澄清:访问了您的网站,没有发现任何错误。打开控制台,没有错误,一切似乎都按设计运行。尝试了所有提供的示例,没有错误。
\n\n所有示例都可以在 Safari 版本 5.1 (7534.48.3) 上正常运行。抱歉,伙计 \xe2\x80\x93 也许这是你更改的设置?
\n\n请允许我提出一种可能性:
\n\n转到Safari
->Empty Cache...
然后Safari
->Reset Safari...
尝试重新加载页面。
可能是缓存的某些内容造成了冲突。你的脚本似乎没有任何问题。
编辑
\n\n有些事情要检查...
\n\n您的函数名称中是否包含保留字?我已经这样做了,如果它没有抛出任何错误,但它根本行不通。
\n\n我遇到了一些奇怪的问题,Safari 没有运行以funcName = function(){}
. 如果您可以确定未触发的方法(我在开发时添加了一个名为 DBG 的小函数,基本上我将在 \xe2\x80\x93 下面添加它,如果设置了调试标志,您将登录到console),你可以尝试重写该函数。
// Some sort of boolean flag.\nvar debug = true;\n\n// This is kind of an obvious function, but can be expanded as you like.\n// Little tricks to make life easier.\nfunction DBG(str) {\n debug ? console.log(str) : return;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n我仍然认为最终这可以归结为缓存错误,但值得一试。
\n 归档时间: |
|
查看次数: |
6752 次 |
最近记录: |