【问题标题】:Force plaintext copy from a Cocoa WebView强制从 Cocoa WebView 复制纯文本
【发布时间】:2011-09-26 00:00:33
【问题描述】:

我有一个 Cocoa Webview 子类,我需要将所有从它复制的文本都设为纯文本。我尝试过覆盖 -copy 和 -pasteboardTypesForSelection,但没有运气,调试代码似乎表明这些方法从未被调用。我还尝试在 css 中将 -webkit-user-modify 设置为 read-write-plaintext-only(这在这种情况下也可以使用),但这似乎没有效果。

有什么想法吗?

【问题讨论】:

    标签: cocoa webkit


    【解决方案1】:

    好的,这似乎可行(将子类实例作为其自己的编辑委托):

    - (BOOL)webView:(WebView *)webView doCommandBySelector:(SEL)command
    {
        if (command == @selector(copy:)) {
            NSString *markup = [[self selectedDOMRange] markupString];
            NSData *data = [markup dataUsingEncoding: NSUTF8StringEncoding];
            NSNumber *n = [NSNumber numberWithUnsignedInteger: NSUTF8StringEncoding];
            NSDictionary *options = [NSDictionary dictionaryWithObject:n forKey: NSCharacterEncodingDocumentOption];
            NSAttributedString *as = [[NSAttributedString alloc] initWithHTML:data options:options documentAttributes: NULL];
            NSString *selectedString = [as string];
            [as autorelease];
    
            NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
            [pasteboard clearContents];
            NSArray *objectsToCopy = [NSArray arrayWithObject: selectedString];
            [pasteboard writeObjects:objectsToCopy];
            return YES;
        }
        return NO;
    }
    

    不确定这是否是最好的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      相关资源
      最近更新 更多