在不重新加载 web 视图的情况下更改 html 文本颜色

Posted

技术标签:

【中文标题】在不重新加载 web 视图的情况下更改 html 文本颜色【英文标题】:Change html text color without reloading the webview 【发布时间】:2015-04-18 12:31:26 【问题描述】:

我想知道如何在不重新加载 webview 的情况下更改 html 文本颜色,因为使用我当前使用的代码,当我向下滚动保存 html 文件的 webview 然后单击我设置的按钮以更改html 文本颜色,页面再次跳转到 html 文件的开头。我认为发生这种情况是因为每次单击按钮时都会重新加载 webview。小伙伴们怎么看?

我正在使用的代码

NSString *myHtmlFile = [[NSBundle mainBundle] pathForResource:htmlName ofType:@"htm"];

NSString* text = [NSString stringWithContentsOfFile:myHtmlFile encoding:NSUTF8StringEncoding error:nil];


[self.myWebView loadHTMLString:[NSString stringWithFormat:@"<html><body  text=\"#000000\" face=\"Bookman Old Style, Book Antiqua, Garamond\" size=\"5\">%@</body></html>", text] baseURL: nil];

我没有任何 javascript 经验,所以如果你能简化你的答案,那将非常有帮助。

【问题讨论】:

贴出按钮的代码。是href还是按钮还是提交?它是否有 # 作为 URL。然后页面将滚动到顶部 @Godwin 我正在使用 UISegmentedControl,除了我上面提到的那个之外没有代码。不知道有没有帮助:) 它正在重新加载您的网页视图。您需要从本机进行 javascript 调用以更改文本。你的js会改变颜色。链接可能对您有所帮助。 ***.com/questions/14334047/… 【参考方案1】:

我注意到,要更改已加载的 html 文件的文本颜色,使用以下代码会更好,因为它不会导致 webview 重新加载。但值得注意的是,此代码仅在更改已加载的 html 文件时对我有效。

[_myWebView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.color =\"Black\""];

但是当我想更改一个新的 html 文件(正在加载)的文本颜色时,下面的代码对我来说效果更好。

NSString * myHtmlFile = [[NSBundle mainBundle] pathForResource:htmlName ofType:@"htm"];

NSString* text = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@",htmlFile);


[self.myWebView loadHTMLString:[NSString stringWithFormat:@"<html><body  text=\"#000000\" face=\"Bookman Old Style, Book Antiqua, Garamond\" size=\"5\">%@</body></html>", text] baseURL: nil];

【讨论】:

【参考方案2】:

当您添加标签时,这意味着 webview 会将其视为新页面并重新加载,您可以使用 javascript 或 jQuery 完成您的任务:)

【讨论】:

以上是关于在不重新加载 web 视图的情况下更改 html 文本颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何在不加载视图的情况下重新加载/刷新部分视图中的级联下拉列表

如何在不重新加载页面的情况下更改浏览器地址栏 - HTML/Javascript [重复]

如何在不重新加载页面的情况下从 FF Web 扩展内容脚本更改 3rd 方网站上的 Angular 应用程序路由/URL

在不重新加载页面的情况下切换 webview 活动

如何在不重新加载页面的情况下更改页面 url

如何在不重新加载页面的情况下更改 URL?