我的社区同胞 - 我在这里需要一些帮助。我确信这很简单,但我只是没有捕获重点。所以请帮忙。
场景:
在 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/