【问题标题】:Cocoa WebView and HTML5 Drag and DropCocoa WebView 和 HTML5 拖放
【发布时间】:2013-03-08 14:46:27
【问题描述】:

我的同胞社区 - 我在这里需要一些帮助。我确信这很简单,但我只是错过了标记。所以请帮忙。

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

实际结果:
粘贴板具有 NSURL 对象,webview 只需获取绝对字符串值并将其粘贴到组合的消息正文中。对于搜索栏等其他编辑区域,这种行为是可以接受的。

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

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

到目前为止我所尝试的:

  • 使用 WebView 编辑委托我尝试替换 DOMRange 中的标记
  • 我将 WebView 子类化以覆盖 performDragging: 并修改 DraggingSource 粘贴板
  • 使用 WebView 首选项私有方法打开 LocalStorage

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

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

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

【问题讨论】:

    标签: html cocoa webview drag-and-drop gmail


    【解决方案1】:

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

    答案是 webview 的 user agent 字符串。

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

    我建议您将您的用户代理字符串进行分析并确保它符合。

    举个例子:
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/xxx.x.x (KHTML, like Gecko) MyApp/x.x.x Safari/xxx.x.x

    注意:“xxx.x.x”是应用套件版本(我不会对此进行详细说明)。

    修复方法是结尾处的标识符 'Safari' 其他人则适用于 Firefox

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

    【讨论】:

    • 我可以确认这个解决方案,因为我自己刚刚实现了它。这很奇怪,我必须说。你知道为什么这真的有效吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 2011-01-12
    • 2018-01-21
    相关资源
    最近更新 更多