gpt4 book ai didi

ios - 为什么在通过 javascript 设置列宽和间距后 UIWebView 不重排文本?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:25:21 27 4
gpt4 key购买 nike

我正在将一个 html 文件加载到 UIWebView 中,并通过 webViewDidFinishLoad 中的 javascript 设置“-webkit-column-width”和“-webkit-column-gap”样式属性,但文本没有重排到列中。

- (void)viewDidLoad
{
[super viewDidLoad];
NSURL *urlForView = [self.book.chapterURLs objectAtIndex:0];
self.webView.delegate = self;
self.webView.scrollView.bounces = NO;
self.webView.scrollView.pagingEnabled = YES;
[self.webView loadRequest:[NSURLRequest requestWithURL:urlForView]];
}

- (void) webViewDidFinishLoad:(UIWebView *)webView
{
NSString *jsString = @"document.getElementsByTagName('body')[0]. setAttribute('style','-webkit-column-width: 733px; -webkit-column-gap: 20px;');)";
[self.webView stringByEvaluatingJavaScriptFromString:jsString];

我已经通过警报确认样式属性设置正确,所以我不明白为什么它们没有效果。在 Safari 中通过控制台执行相同的 javascript 字符串具有预期的效果。知道为什么这在 UIWebView 中不起作用吗?

最佳答案

我仍然不明白为什么上面的代码不起作用,但我找到了一种解决方法,方法是通过 javascript 获取文件的外部样式表,然后通过 javascript 编辑该 CSS 文件。

NSString *varMySheet = @"var mySheet = document.styleSheets[0];";

NSString *addCSSRule = @"function addCSSRule(selector, newRule) {"
"ruleIndex = mySheet.cssRules.length;"
"mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);" // For Firefox, Chrome, etc.
"}";

NSString *insertRule1 = [NSString stringWithFormat:@"addCSSRule('html', 'padding: 0px; height: %fpx; -webkit-column-gap: 0px; -webkit-column-width: %fpx;')", webView.frame.size.height, webView.frame.size.width];
NSString *insertRule2 = [NSString stringWithFormat:@"addCSSRule('p', 'text-align: justify;')"];
//NSString *setTextSizeRule = [NSString stringWithFormat:@"addCSSRule('body', '-webkit-text-size-adjust: %d%%;')", currentTextSize];


[webView stringByEvaluatingJavaScriptFromString:varMySheet];

[webView stringByEvaluatingJavaScriptFromString:addCSSRule];

[webView stringByEvaluatingJavaScriptFromString:insertRule1];

[webView stringByEvaluatingJavaScriptFromString:insertRule2];

AePubReader project 致敬我在哪里找到这段代码。

关于ios - 为什么在通过 javascript 设置列宽和间距后 UIWebView 不重排文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10852435/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com