Javascript 如何在swift 4中从WKWebView的网页中删除DIV标记?

Javascript 如何在swift 4中从WKWebView的网页中删除DIV标记?,javascript,ios,swift,wkwebview,Javascript,Ios,Swift,Wkwebview,在swift 4中将网页加载到WKWebVIew时,我想从网页中删除页眉和页脚div标记。 我尝试了以下代码。但它不起作用。。 给我一个解决办法 class ViewController: UIViewController { @IBOutlet var webView: WKWebView! override func viewDidLoad() { super.viewDidLoad() var url: URL? url = URL(s

在swift 4中将网页加载到WKWebVIew时,我想从网页中删除页眉和页脚div标记。 我尝试了以下代码。但它不起作用。。 给我一个解决办法

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.
   }
}

我认为你应该等待网站加载

您需要使用
WKNavigationDelegate
并在中评估脚本

func webView(webView: WKWebView!, didFinishNavigation navigation: WKNavigation!) {
   print("Finished navigating to url \(webView.url)");
}
实际上,当您要评估脚本时,您的站点没有加载

**更新**

你需要这样的东西

// 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.
   }
}

什么不起作用?是否执行didFinishNavigation中的打印?在打印“Finished navigation to url”之后,您正在使用didFinishNavigation方法执行脚本,对吗?我会的,但老实说,堆栈溢出不是一种代码编写服务。。。检查didFinishNavigation中的代码是否会被执行。谢谢,我也尝试了此代码…这也不起作用…我甚至不会打印“已完成导航到url(webView.url)”这行…这是控制台2018-02-07 16:38:31.033969+0530测试[7127:197640][MC]延迟加载NSBundle MobileCoreServices.framework 2018-02-07 16:38:31.035541+0530测试[7127:197640][MC]上的响应已加载MobileCoreServices.Framework您可以忽略这一点,这与您的问题无关。@himanshuradia您需要按类获取元素并将其删除。