2015-12-17 86 views
1

我有一個應用程序,用戶可以加載不同的網址。問題是,每次用戶加載一個URL,KINWebBrowser顯示煩人的cookies警告消息。有可能以任何方式自動接受這些cookie或刪除這些消息?Swift避免網站的Cookies警告

回答

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/

你不得不做餅乾彈出類的列表,並循環通過它呼籲每個人removeClassFromWebpage

+0

我應該把你的代碼放在app的delegate.swift文件中?我已經這樣做了,但cookie策略警告顯示相同... – Swift1

+0

此代碼將在您的KINWebBrowserViewController的**委託**中進行。 [這是對代表的很好的介紹。](https://www.andrewcbancroft.com/2015/04/08/how-delegation-works-a-swift-developer-guide/)你需要做什麼:(1 )將協議'KINWebBrowserDelegate'添加到您已經創建的類中或爲其創建一個新類。 (3)實現我的方法上面的任何類是委託 (3)將KINWebBrowserViewController的**委託**屬性設置爲委託類的實例。 –

+0

我有1)將協議添加到我的ViewController好2)實現你的方法3)我如何可以將KINWebBrowserViewController的委託屬性設置爲委託類的實例?例如ViewController? – Swift1