Can I run JavaScript inside Swift code?

前端 未结 2 615
挽巷
挽巷 2020-12-23 01:56

I need to include JavaScript code in Swift code to be able to call a signalR chat, is that possible? If not, can I convert it?

sendmessage is a button.<

相关标签:
2条回答
  • 2020-12-23 02:36

    Using JavaScriptCore framework include JavaScript code in Swift code.

    The class that you’ll be dealing the most with, is JSContext. This class is the actual environment (context) that executes your JavaScript code.

    All values in JSContext, are JSValue objects, as the JSValue class represents the datatype of any JavaScript value. That means that if you access a JavaScript variable and a JavaScript function from Swift, both are considered to be JSValue objects.

    I strongly advise you to read the official documentation regarding the JavaScriptCore framework. 

    import JavaScriptCore
    
    
    var jsContext = JSContext()
    
    
    // Specify the path to the jssource.js file.
    if let jsSourcePath = Bundle.main.path(forResource: "jssource", ofType: "js") {
        do {
            // Load its contents to a String variable.
            let jsSourceContents = try String(contentsOfFile: jsSourcePath)
    
            // Add the Javascript code that currently exists in the jsSourceContents to the Javascript Runtime through the jsContext object.
            self.jsContext.evaluateScript(jsSourceContents)
        }
        catch {
            print(error.localizedDescription)
        }
    }  
    

    more details refer this tutorial

    0 讨论(0)
  • 2020-12-23 02:48

    Last tested with Swift 5.1

    Here is an example you can run in Playground to get you started:

    import JavaScriptCore
    
    let jsSource = "var testFunct = function(message) { return \"Test Message: \" + message;}"
    
    var context = JSContext()
    context?.evaluateScript(jsSource)
    
    let testFunction = context?.objectForKeyedSubscript("testFunct")
    let result = testFunction?.call(withArguments: ["the message"])
    

    result would be Test Message: the message.

    You also can run JavaScript code within a WKWebView calling evaluate​Java​Script(_:​completion​Handler:​).

    You can also run JavaScript within a UIWebView by calling string​By​Evaluating​Java​Script(from:​), but note that that method has been deprecated and is marked as iOS 2.0–12.0.

    0 讨论(0)
提交回复
热议问题