最好的办法是下载一个外部网页,用js和css修改,然后在视图中加载
Best way to download an external webpage, modify it with js and css, then load it in the view
技术: iOS8, SWIFT, XCode 6
使用swift,保存外部网站的html/css/js最好的方法是什么,用我自己的css / js修改保存的数据,然后在视图中加载它.这样,外部页面加载了我的自定义 styles/js 已经实现。
我不确定你对 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 警报作为概念证明。
技术: iOS8, SWIFT, XCode 6
使用swift,保存外部网站的html/css/js最好的方法是什么,用我自己的css / js修改保存的数据,然后在视图中加载它.这样,外部页面加载了我的自定义 styles/js 已经实现。
我不确定你对 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 警报作为概念证明。