1

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

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

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

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

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

到目前为止我已经尝试过:

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

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

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

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

4

1 回答 1

2

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

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

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

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

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

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

修复程序是末尾的标识符 ' Safari ' 其他工作,例如Firefox

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

于 2013-03-08T21:43:41.000 回答