【发布时间】:2020-07-22 05:47:18
【问题描述】:
我需要处理粘贴到 WKWebView(来自任何来源)中的文本,该文本运行可能需要一些时间的异步操作。
我最初的想法是使用 Javascript 和 WKWebView 配置来获取onpaste 事件:
WKUserContentController *wkUController = [[WKUserContentController alloc] init];
NSString *pasteJSSource = @"document.addEventListener('onpaste', function(){ window.webkit.messageHandlers.ComposerListener.postMessage('onpaste happened!'); })";
WKUserScript *pasteScript = [[WKUserScript alloc] initWithSource:pasteJSSource injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly: NO];
[wkUController addScriptMessageHandler:self name:@"ComposerListener"];
[wkUController addUserScript:pasteScript];
webViewConfiguration.userContentController = wkUController;
然后我的班级实现WKScriptMessageHandler
#pragma mark - WKScriptMessageHandler
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message
{
NSLog(@"message: %@", message.body);
}
(忽略Obj-c,swift也可以)
但是我有两个问题:
-
userContentController:didReceiveScriptMessage:永远不会被调用 - 我不知道如何截取粘贴的代码并用不同的东西替换它
关于如何解决这个问题的任何想法(即使没有我显然不知道的 JS :P )? 谢谢。
【问题讨论】:
标签: javascript ios wkwebview wkwebviewconfiguration