Reputation:
I want to remove the header and footer div tags from my webpage when loading it into the WKWebVIew in swift 4. I have tried the following code. but it was not working.. give me solution for this!
class ViewController: UIViewController {
@IBOutlet var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
var url: URL?
url = URL(string: "https://www.walkmate.co.in")
let request = URLRequest(url: url!)
webView.load(request)
let script="function(){ var footer=document.getElementsByClassName('footer-env')[0]; footer.parentNode.removeChild(footer); })())"
webView.evaluateJavaScript(script) { (result, error) in
if error != nil {
print(result)
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Upvotes: 3
Views: 3530
Reputation: 3210
I think you should wait for the site is loaded.
You need the WKNavigationDelegate
and evaluate your script in
func webView(webView: WKWebView!, didFinishNavigation navigation: WKNavigation!) {
print("Finished navigating to url \(webView.url)");
}
Actually your site is not loaded while you want to evaluate your script.
** update **
You need something like this
// add the protocol
class ViewController: UIViewController, WKNavigationDelegate {
@IBOutlet var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
var url: URL?
url = URL(string: "https://www.walkmate.co.in")
let request = URLRequest(url: url!)
webView.navigationDelegate = self // set the delegate
webView.load(request)
}
func webView(webView: WKWebView!, didFinishNavigation navigation: WKNavigation!) {
print("Finished navigating to url \(webView.url)");
let script="function(){ var footer=document.getElementsByClassName('footer-env')[0]; footer.parentNode.removeChild(footer); })())"
webView.evaluateJavaScript(script) { (result, error) in
if error != nil {
print(result)
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Upvotes: 1