Swift避免网站的cookie警告

时间:2015-12-17 22:19:23

标签: ios swift url cookies

我有一个应用,用户可以在其中加载不同的网址。问题是,每次用户加载网址时,KINWebBrowser都会显示恼人的Cookie警告消息。它可以以任何方式自动接受这些cookie或删除这些消息吗?

1 个答案:

答案 0 :(得分:0)

您可以通过在网页加载后在网页上运行一些Javascript来消除不需要的元素。

KINWebBrowser定义了一个KINWebBrowserDelegate协议,当页面加载时调用方法didFinishLoadingURL,所以我们从那里运行Javascript:

func removeClassFromWebpage(browser: KINWebBrowserViewController, className: String) {
  let js = "var elements = document.getElementsByClassName('\(className)');" +
           "while(elements.length > 0) {                                   " +
           "   elements[0].parentNode.removeChild(elements[0]);            " +
           "}                                                              "

  if (browser.uiWebView != nil) { // iOS <9 browser class
    browser.uiWebView!.stringByEvaluatingJavaScriptFromString(js)
  }
  else if (browser.wkWebView != nil) { // iOS 9 browser class
     browser.wkWebView!.evaluateJavaScript(js, completionHandler: nil)
  }
}

func webBrowser(webBrowser: KINWebBrowserViewController!, didFinishLoadingURL URL: NSURL!) {
  removeClassFromWebpage(browser: webBrowser, className: "cookiePolicy")
  // Replace "cookiePolicy" with whatever the class name of the
  // cookie popup is.
}

您必须在应用访问的网页来源中进行一些调查,以确定Cookie弹出窗口的类名称。

如果您想要删除所有Cookie弹出窗口,AdBlock Plus会在此处列出典型的Cookie弹出窗口列表:http://www.kiboke-studio.hr/i-dont-care-about-cookies/abp/

你必须制作一个cookie-popup类列表,然后遍历它,为每个类调用removeClassFromWebpage