WWJavaScriptContext

main

JavaScriptCore Widget
William-Weng/WWJavaScriptContext

WWJavaScriptContext

Swift-5.6 iOS-14.0 TAG Swift Package Manager-SUCCESS LICENSE

  • JavaScriptCore Widget.
  • JavaScriptCore小工具.

WWJavaScriptContext

dependencies: [
    .package(url: "https://github.com/William-Weng/WWJavaScriptContext.git", .upToNextMajor(from: "1.0.3"))
]

Function - 可用函式

函式 功能
build(script:) 建立執行完成的環境
callFunctionName(_:arguments:) 執行javaScript程式
evaluateScript(_:) 執行Script
insertNativeFunctionName(_:handler:) 建立Swift-function給js用
removeNativeFunctionName(_:) 移除Swift-function
createdNativeFuntions() 取得已建立的Swift-Functions
exceptionHandler(_:) 回應js控制台錯誤

Example

import UIKit
import WWJavaScriptContext
import WWPrint

final class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        simpleDemo()
        addNumbers(num1: 5, num2: 6)
        removeFunction()
    }
}

// MARK: - private function
private extension ViewController {
    
    /// 基本使用
    func simpleDemo() {
        
        let script = "var jsFunc = function(message) { return '測試用訊息:' + message; }"
        let context = WWJavaScriptContext.build(script: script)

        context.exceptionHandler { context, exception in
            if let exception = exception { wwPrint(exception) }
        }
        
        wwPrint(context.callFunctionName("jsFunc", arguments: ["William"]))
    }
    
    /// 兩數相加 (使用Swift自訂Function)
    /// - Parameters:
    ///   - num1: Int
    ///   - num2: Int
    func addNumbers(num1: Int, num2: Int) {
        
        let context = WWJavaScriptContext.build(script: "")
        let addNumbersHandler: @convention(block) (Int, Int) -> Int = { num1, num2 in return num1 + num2 }
                        
        _ = context.insertNativeFunctionName("add", handler: addNumbersHandler)
        wwPrint("自訂function:\(context.createdNativeFuntions())")
        wwPrint(context.callFunctionName("add", arguments: [num1, num2]))
    }
    
    /// 移除自訂function
    func removeFunction() {
        
        let context = WWJavaScriptContext.build(script: "")
        
        context.exceptionHandler { context, exception in
            if let exception = exception { wwPrint(exception) }
        }
        
        _ = context.removeNativeFunctionName("add")
        wwPrint(context.callFunctionName("add", arguments: [1, 2]))
    }
}

Description

  • Swift Tools 5.6.0
View More Packages from this Author

Dependencies

  • None
Last updated: Mon Apr 15 2024 04:01:28 GMT-0900 (Hawaii-Aleutian Daylight Time)