Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa WebView和HTML5拖放_Html_Cocoa_Webview_Drag And Drop_Gmail - Fatal编程技术网

Cocoa WebView和HTML5拖放

Cocoa WebView和HTML5拖放,html,cocoa,webview,drag-and-drop,gmail,Html,Cocoa,Webview,Drag And Drop,Gmail,我的同胞们——我在这里需要帮助。我确信这很简单,但我只是没有抓住要点。所以请帮忙 场景: 在Mac OS X 10.7或更高版本上,我有一个webview作为浏览器。在那个网络视图中,我导航到Gmail。在Gmail中,我撰写一条消息,然后将一个或多个文件拖放到撰写框中 实际结果: 粘贴板具有NSURL对象,webview只需获取绝对字符串值并将其粘贴到合成的消息体中。对于其他编辑区域,如搜索栏,这种行为是可以接受的 所需结果: 当鼠标滑过时,拖动会触发HTML5,拖放会触发适当的javascr

我的同胞们——我在这里需要帮助。我确信这很简单,但我只是没有抓住要点。所以请帮忙

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

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

所需结果:
当鼠标滑过时,拖动会触发HTML5,拖放会触发适当的javascript来上传文件。这种行为与FireFox、Safari和OmniWeb的表现是一致的

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

到目前为止我所尝试的:

  • 使用WebView编辑委托,我尝试替换DOMRange中的标记
  • 我将WebView子类化以覆盖PerformDraging:并修改DragingSource粘贴板
  • 使用WebView首选项专用方法打开LocalStorage
注意:该应用程序将被沙盒化,当前未进行代码签名

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


p.S.我已经尝试了很多东西,我不想用迄今为止我尝试过的无用代码片段把这个问题弄得一团糟。然而,如果问题解决了,我会把我的结果公布给所有其他人。

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

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

这里是一个有用信息的链接。

我建议您对useragent字符串进行分析,并确保其符合要求

举个例子:
Mozilla/5.0(Macintosh;英特尔Mac OS X 10_8_2)AppleWebKit/xxx.X.X(KHTML,如Gecko)MyApp/X.X.XSafari/xxx.X.X

注意:xxx.x.x是应用套件版本(我不会详细介绍)

修复程序是“Safari”末尾的标识符。 其他人的工作方式包括Firefox


快乐编码!真的希望这能帮助别人。

我可以确认这个解决方案,因为我刚刚自己实现了它。我必须说,这很奇怪。你知道为什么这真的有效吗?