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