Inject Javascript into Webview - Swift

15,705

Solution 1

Just do:

let js = "var myelement = document.getElementById(\"test\");myelement.innerHTML= \"New Text\";"
webView.evaluateJavaScript(js, completionHandler: nil)

If you are using UIWebView instead of WKWebView, do this:

let js = "var myelement = document.getElementById(\"test\");myelement.innerHTML= \"New Text\";"
_ = webView.stringByEvaluatingJavaScript(from: js)

Solution 2

use WKWebview and use WKNavigationDelegate Delegate

func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {
        let str = "setData(\"\(uid)\",\"\(DataProvider.sharedInstance.baseUrl)\")"
        self.webView.evaluateJavaScript(str) { (id, error) in
            print(error)
        }
    }
Share:
15,705
user2423476
Author by

user2423476

Updated on July 29, 2022

Comments

  • user2423476
    user2423476 over 1 year

    How can I inject javascript into a webview (IOS/Swift) after loading some custom html.

    @IBOutlet weak var webView: UIWebView!
    
    var html = "<div id='test'></div>"
    
    self.webview.loadHTMLString(html, baseURL: nil)
    

    I want to inject the following javascript into the webview after I load my custom html.

    var myelement = document.getElementById("test");
    myelement.innerHTML= "New Text";
    
  • user3773048
    user3773048 over 5 years
    It's still there, just Swift 4-ized / modularized; try this signature: func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!). (Injecting the JS here does the job for me -- thanks!)