技术:iOS8,SWIFT,XCode 6
使用swift,保存外部网站的html / css / js的最佳方法是,用我自己的css / js修改保存的数据,然后将其加载到视图中。这样,外部页面加载了我已经实现的自定义样式/ j。
答案 0 :(得分:1)
我不确定您对UIWebView的使用有多复杂,但是,我能想到的最快的实现(除了您已经完成的evaluateJS路线):
创建一个属性以确定请求是否已被劫持(由您)。
var hijacked = false
提供UIWebViewDelegate协议方法。
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
//if true it must be our version, reset hijack and allow to load
if hijacked {
hijacked = false
return true
}
//original request. Don't let it load, instead trigger manual loader.
else {
hijacked = true
manuallyLoadPage(request)
return false
}
}
然后你只需要一个方法来获取页面,获取文本,操作文本,然后用你的版本加载页面。
func manuallyLoadPage(request: NSURLRequest) {
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request) {
(data, response, error) in
var html = NSString(data: data, encoding: NSUTF8StringEncoding) as! String
html = html.stringByReplacingOccurrencesOfString("</head>", withString: "<script>alert(\"I added this\")</script></head>", options: NSStringCompareOptions.CaseInsensitiveSearch, range: nil)
self.webView.loadHTMLString(html, baseURL: response.URL!)
}
task.resume()
}
这只是一种快速而肮脏的方法,您可能希望更全面地跟踪哪些请求被劫持请求等等......这只是假设一种奇怪的方法。你可以明显地操纵你想要的html,我只是添加了JS警告作为概念证明。