2016-06-28 3 views
1

SwiftでWKWebViewを取得して、読み込まれたWebページのJavaScriptをトリガーするのに問題がありました。あなたが左にスワイプしたり、右にスワイプしたり、ボタンをクリックした場合、JavaScriptを使ってウェブサイトの背景色を変更しようとしています。どんな助けでも大歓迎です。Swift WKWebViewとJavascriptのやりとり

import UIKit 
import WebKit 

class myViewController: UIViewController, WKNavigationDelegate { 

@IBOutlet var container: UIView! 
var webView: WKWebView? 

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.webView = WKWebView() 
    container.addSubview(webView!) 

    webView?.allowsBackForwardNavigationGestures = true 
    webView?.navigationDelegate = self 

    let leftSwipe = UISwipeGestureRecognizer(target: self, action: #selector(myViewController.handleSwipes(_:))) 
    let rightSwipe = UISwipeGestureRecognizer(target: self, action: #selector(myViewController.handleSwipes(_:))) 
    leftSwipe.direction = .Left 
    rightSwipe.direction = .Right 

    view.addGestureRecognizer(leftSwipe) 
    view.addGestureRecognizer(rightSwipe) 
} 

override func viewDidAppear(animated: Bool) { 

    let frame = CGRectMake(0, 0, container.bounds.width, container.bounds.height) 
    webView!.frame = frame 

    let url = NSURL(string: "https://www.google.com") 
    let request = NSURLRequest(URL: url!) 
    self.webView!.loadRequest(request) 

} 

@IBAction func buttonClick(sender: AnyObject) { 
     webView?.evaluateJavaScript("document.getElementByID('hplogo').style.backgroundColor='red';", completionHandler: nil) 

} 

func handleSwipes(sender:UISwipeGestureRecognizer){ 

    if (sender.direction == .Left){ 
     webView?.evaluateJavaScript("document.getElementByID('hplogo').style.backgroundColor='black';", completionHandler: nil) 

    } 

    if (sender.direction == .Right){ 
      webView?.evaluateJavaScript("document.getElementByID('hplogo').style.backgroundColor='green';", completionHandler: nil) 

    } 
} 

func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) { 
    webView?.evaluateJavaScript("document.getElementByID('hplogo').style.backgroundColor='red';", completionHandler: nil) 
} 

} 
+0

あなたはこの http://www.joshuakehn.com/2014/10/29/using-javascript-with-wkwebview-in-ios-8.htmlを試すことができます:それは、代わりにgetElementByIDgetElementByIdする必要があります – Proton

+0

そう、私はチュートリアルを見ましたが、私はObjective-Cをあまりよく理解していません。 @DungProton – kelsheikh

+0

「問題がある」というのはあまりにも一般的です。何があなたのために働いていないのですか?色が変わったり、間違った色に変わったりしましたか? –

答えて

2

Javascriptの関数名のスペルが間違っています。

document.getElementById('hplogo').style.backgroundColor = '...' 
+0

まあ、私は愚かだと感じる。それはそれだった。ご協力いただきありがとうございます! – kelsheikh

関連する問題