在不重新加载 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