使用的技术: XCode 6,iOS8,Swift
我在uiwebview中加载了一个网页,我还在该网页的正文中添加了一个新的样式表并覆盖了它的一些样式。但是,在加载网页和应用样式之间存在延迟(可能是1秒或2秒),因此您可以在重新设置网页之前查看该网页。我使用javascript将新样式附加到网页正文。我该如何解决这个问题,以便网页只显示已经应用的样式?这是我的代码:
导入UIKit
@IBOutlet var website: UIWebView!
var url = "http://www.fake-website-url.net"
func loadUrl() {
let requestURL = NSURL(string: url)
let request = NSURLRequest(URL: requestURL!)
website.loadRequest(request)
}
override func viewDidLoad() {
super.viewDidLoad()
website.delegate = self
loadUrl()
}
func webViewDidFinishLoad(website: UIWebView) {
var loadStyles = "var script = document.createElement('link');script.type = 'text/css';script.rel = 'stylesheet';script.href = 'http://fake-url.styles.css';document.getElementsByTagName('body')[0].appendChild(script);"
website.stringByEvaluatingJavaScriptFromString(loadStyles)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
注意,我使用的是Swift。
答案 0 :(得分:1)
我要做的是创建一个属性来存储下载的页面。然后覆盖属性设置器以在将页面保存到该属性后添加自定义样式表。然后最终将其加载到Web View中。
希望这是有道理的。