Reader Mode

This commit is contained in:
James Magahern
2021-02-15 22:34:05 -08:00
parent 6611e381a2
commit 2b5475d7f8
9 changed files with 2474 additions and 4 deletions

View File

@@ -31,6 +31,7 @@
id<SBRWebProcessProxy> _webProcessProxy;
_WKUserStyleSheet *_darkModeStyleSheet;
WKUserScript *_readabilityScript;
}
- (void)tearDown
@@ -161,4 +162,32 @@
}
}
- (void)parseDocumentForReaderMode:(void (^)(NSString * _Nonnull))completionBlock
{
WKUserContentController *userContentController = [_webViewConfiguration userContentController];
if (!_readabilityScript) {
NSURL *readabilityJSURL = [[NSBundle mainBundle] URLForResource:@"Readability" withExtension:@"js"];
NSString *readabilityJSSource = [NSString stringWithContentsOfURL:readabilityJSURL encoding:NSUTF8StringEncoding error:nil];
_readabilityScript = [[WKUserScript alloc] initWithSource:readabilityJSSource injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];
}
[userContentController _addUserScriptImmediately:_readabilityScript];
NSString *script = @""
"var documentClone = document.cloneNode(true);"
"var article = new Readability(documentClone).parse();"
"article.content";
[_webView evaluateJavaScript:script completionHandler:^(NSString *result, NSError * _Nullable error) {
if (error != nil) {
NSLog(@"Bridge: Readability error: %@", error.localizedDescription);
} else {
completionBlock(result);
}
}];
}
@end