在OSX上从chrome复制URL并粘贴到可编辑的WebKit webview中时,不会粘贴任何内容。
我确认NSPasteboard上有项目,NSPasteboardItem有以下类型:
"dyn.ah62d4rv4gu8zs3pcnzme2641rf4guzdmsv0gn64uqm10c6xenv61a3k",
"dyn.ah62d4rv4gu8yc6durvwwaznwmuuha2pxsvw0e55bsmwca7d3sbwu",
"public.utf8-plain-text",
"dyn.ah62d4rv4gu8yg55wqzkgc65yqzvg82pwqvdg22p0r73fk8puqyuda8b1gy5xerwdgk2a",
"dyn.ah62d4rv4gu8yg55wqzkgc65yqzvg82pwqvdg22p0r73fk8puqyuda8b1gy5xerwdg3cu"
我知道这些是自动生成的并映射到WebURLsWithTitlesPboardType。
在执行从safari到webview的相同操作时,它可以工作,因为它只包含
"public.utf8-plain-text"
是否有更好的处理这些UTI的已知解决方法?
答案 0 :(得分:0)
Webkit webviews似乎不支持动态UTI的粘贴操作。我通过在webview中拦截粘贴:在没有那些UTI的情况下重新创建粘贴板项目来解决它:doCommandBySelector:
- (void)cleanupPasteboard:(NSPasteboard *)pasteboard {
NSMutableArray *newItems = [[NSMutableArray alloc] init];
for (NSPasteboardItem *item in pasteboard.pasteboardItems) {
NSPasteboardItem *newItem = [[NSPasteboardItem alloc] init];
for (NSString *type in item.types) {
if (![type hasPrefix:@"dyn"]) {
[newItem setData:[item dataForType:type] forType:type];
}
}
[newItems addObject:newItem];
}
[pasteboard clearContents];
[pasteboard writeObjects:newItems];
}