html - Cocoa WebView 和 HTML5 拖放

标签 html cocoa webview drag-and-drop gmail

我的社区同胞 - 我在这里需要一些帮助。我确信这很简单,但我只是没有捕获重点。所以请帮忙。

场景:
在 Mac OS X 10.7 或更高版本上,我有一个 webview 作为浏览器。在该 WebView 中,我导航到 Gmail。在 Gmail 中,我撰写一封邮件,然后将一个或多个文件拖放到撰写框中。

实际结果:
粘贴板具有 NSURL 对象,而 Web View 仅获取绝对字符串值并将其粘贴到组成的消息正文中。对于其他编辑区域(例如搜索栏),这种行为是可以接受的。

期望的结果:
希望鼠标悬停时拖动会触发 HTML5,并且放下会触发正确的 javascript 来上传文件。此行为与 FireFox、Safari 和 OmniWeb 的执行方式一致。

如何获得同样一致的行为/我需要实现什么?

到目前为止我尝试过的:

  • 使用 WebView 编辑委托(delegate)我尝试替换 DOMRange 中的标记
  • 我对 WebView 进行了子类化以覆盖 PerformDragging: 并修改 DraggingSource 粘贴板
  • 使用 WebView 首选项私有(private)方法启用 LocalStorage

注意:该应用将被沙盒化,并且当前未进行代码签名。

那么我错过了什么或者更好的是我从哪里开始和结束?

P.S.我已经尝试了很多事情,我不想用迄今为止我尝试过的无用代码片段来混淆这个问题。但是,如果解决了,我会将我的结果发布给所有其他人。

最佳答案

我觉得我很傻。解决方案很简单,但并不明显。

答案是它是 WebView 的用户代理字符串。

这是有用信息的链接。 http://www.useragentstring.com/

我建议您分析您的用户代理字符串并确保其符合要求。

看下面的例子:
Mozilla/5.0(Macintosh;Intel Mac OS X 10_8_2)AppleWebKit/xxx.x.x(KHTML,如 Gecko)MyApp/x.x.x Safari/xxx.x.x

注意:“xxx.x.x”是应用程序套件版本(我不会详细介绍这一点)。

解决办法是“Safari”末尾的标识符 其他工作例如 Firefox

编码愉快!真的希望这可以帮助别人。

关于html - Cocoa WebView 和 HTML5 拖放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15296633/

相关文章:

android - 如何让Android WebView清除缓存?

javascript - MomentJS - 如何显示剩余时间

php - 如何在 codeigniter 中引用 css 文件?

objective-c - 需要一些帮助来理解 Apple 关于 Core Data 的文档

Objective-C 类别不被识别?

ios - React Native WebView 与 iOS 和 domStorage

PHP 在 MAMP 中不显示任何内容

javascript - .style 不改变元素

objective-c - NSOutlineView 的拖放方法未被调用

android - 如何在使用 Android WebView 加载带有 css 的 xml 时动态更改样式?