javascript does not work on iOS9+Swift 2.0

I have been using WKWebView.

I would like to work javascript on iOS9+Swift 2.0. But It couldn't work.

console.log("hoge") couldn't even work.

My code is here


/
/
/
/
/
/
/
import UIKit
class CommonWebVCL: GABase,UIWebViewDelegate,UIScrollViewDelegate,WKNavigationDelegate,WKUIDelegate {
    var webview: WKWebView!
  
    var str_url:String! = ""
    var url:String!
    var gobackSearch:Bool! = false
  
    var previousScrollViewYOffset:CGFloat? = 0
    var toolbarheight:CGFloat = 0
    var analytics_category:String!
  
  
    override func viewDidLoad() {
        super.viewDidLoad()
        changeUserAgent()
      
      
        let webViewConfiguration = WKWebViewConfiguration()
      
      
        self.webview = WKWebView(frame: self.view.bounds, configuration: webViewConfiguration)
      
        self.webview.navigationDelegate = self
        self.webview.UIDelegate = self
        addObserverForWKWebView()
        self.view.addSubview(webview)
      
        setBackButton()
      
    }
  
    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
      
        navigationBarInit()
        /
        self.webview.scrollView.delegate = self
      
    }
  
    func setBackBtnForWeb(){
        let leftbtn = UIButton(frame: CGRect(x: 0, y: 0, width: 48, height: 22))
        leftbtn.setImage(UIImage(named: "back_btn"), forState: .Normal)
        leftbtn.addTarget(self, action: "goBackForWeb:", forControlEvents: UIControlEvents.TouchUpInside)
        let backButton = UIBarButtonItem(customView: leftbtn)
        self.navigationItem.setLeftBarButtonItem(backButton, animated: true)
      
    }
  
    func webView(webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!){
        /
      
        if let tmpstr_url = self.webview.URL?.absoluteString{
            if (tmpstr_url.rangeOfString("tel") == nil){
                SVProgressHUD.show()
            }
        }
      
    }
  
    func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!){
        /
        if SVProgressHUD.isVisible(){
            SVProgressHUD.dismiss()
        }
      
    }
  
    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
      
        navigationBarInit()
      
        let URL = NSURL(string: url)
        let urlRequest: NSURLRequest = NSURLRequest(URL: URL!)
        self.webview.loadRequest(urlRequest)
      
    }
  
    override func viewDidLayoutSubviews() {
      
      
        self.webview.frame = self.view.bounds
      
        navigationBarInit()
    }
  
  
    override func viewDidDisappear(animated: Bool) {
      
      
        super.viewDidDisappear(animated)
        if SVProgressHUD.isVisible(){
            SVProgressHUD.dismiss()
        }
        if (self.gobackSearch != nil){
            sendEvent(analytics_category, str_action: "back")
            self.navigationController?.popViewControllerAnimated(true)
        }
      
        self.webview.scrollView.delegate = nil
        self.webview.navigationDelegate = nil
        self.webview.stopLoading()
        UIApplication.sharedApplication().networkActivityIndicatorVisible = false
    }
  
  
  
  
    func addObserverForWKWebView(){
      
        self.webview.addObserver(self, forKeyPath: "canGoBack", options: NSKeyValueObservingOptions.New, context: nil) /
        self.webview.addObserver(self, forKeyPath: "URL", options: NSKeyValueObservingOptions.New, context: nil) /
    }
  
    /
    override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
        if object!.isEqual(webview){
            if keyPath == "estimatedProgress"{
                self.navigationController?.setSGProgressMaskWithPercentage(Float(self.webview.estimatedProgress*100))
                navigationBarInit()
            }else if keyPath == "canGoBack"{
              
              
            }else if keyPath == "URL"{
                if let tmpstr_url = self.webview.URL?.absoluteString{
                    self.str_url = tmpstr_url
                    handleUrl()
                  
                }
            }
        }
    }
    /
    func handleUrl(){
      
    }
  
    /
    deinit{
        if self.webview != nil{
            /
            self.webview.removeObserver(self, forKeyPath: "canGoBack", context: nil)
            self.webview.removeObserver(self, forKeyPath: "URL", context: nil)
        }
      
      
    }
    @IBAction func goBackForWeb(sender: AnyObject) {
        if self.webview.canGoBack{
          
            webview.goBack()
          
        }else{
            self.navigationController?.popViewControllerAnimated(true)
        }
      
    }
  
    func webViewDidStartLoad(webView: UIWebView){
        SVProgressHUD.showWithStatus("読み込み中")
        navigationBarInit()
    }
  
    func webViewDidFinishLoad(webView: UIWebView){
        SVProgressHUD.dismiss()
      
    }
  
    func webView(webView: UIWebView, didFailLoadWithError error: NSError?){
        SVProgressHUD.dismiss()
    }
  
    func webView(webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: () -> Void){
        let alertController = UIAlertController(title: frame.request.URL?.host, message: message, preferredStyle: .Alert)
        alertController.addAction(UIAlertAction(title: "OK", style: .Default, handler: { action in
            completionHandler()
        }))
        self.presentViewController(alertController, animated: true, completion: nil)
    }
  
  
  
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        /
    }
  
}


What is this problem?

By the way this problem is only iOS9 by swift2.0.

It works correctly on other platform including iOS9 by swift 1.2.

Replies

I might resolve it by myself. This web page always use http protocol. So I changed https protocol,javascript have worked correctly.