javascript - 如何从swift调用javascript

标签 javascript swift

我想用一些用户定义的宏来扩展我的电子表格应用程序。使用 javascript 似乎是个好主意......

它发现了一个“小问题”(我对 javascript 非常陌生)

import JavaScriptCore

let context = JSContext()!
context.exceptionHandler = { context, exception in
    print("exception:", exception?.toString() ?? "")
}

context.evaluateScript(
    """
    foo = function(a, b) {
        return a + b
    }
    """
)
context.evaluateScript("foo(1, 2)") // 3
context.objectForKeyedSubscript("foo")?.call(withArguments: [1,2]) // 3

context.evaluateScript(
    """
    Foo = function() {}
    Foo.foo = function(a, b) {
        return a + b
    }
    """
)
context.evaluateScript("Foo.foo(1, 2)") // 3

// exception.  TypeError: undefined is not an object
context.objectForKeyedSubscript("Foo.foo")?.call(withArguments: [1, 2]) // Foo.foo is undefined ?????

如果 Foo.foo 是未定义的,它怎么能早一行运行?

最佳答案

您尝试了 .call(withArguments。但我认为这适用于需要两个参数(对象和参数)的 Function.prototype.call()。有关更多信息: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call

这行得通

context.objectForKeyedSubscript("Foo")?.invokeMethod("foo", withArguments: [1, 2])

关于javascript - 如何从swift调用javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55632446/

相关文章:

javascript - Google 表格脚本错误 - cell.setHorizo​​ntalAlignment(SpreadsheetApp.Horizo​​ntalAlignment.CENTER)

javascript - 检测没有滚动条的页面上的滚动

iOS Swift - 如何显示 pdf 文件,该文件位于 adobe reader 的本地存储中

ios - 如何查明本地通知的后台操作是否在 iPhone 或 Apple Watch 上得到应答

ios - Alamofire 请求错误 : NSURLErrorDomain Code -1005 The network connection was lost

javascript - DIV 不随内容扩展 - 使用的方法(最小高度,溢出 :hidden, 清除 div.. 没有工作:-( )

javascript - 在asp.net中从客户端浏览器向服务器发送文件有哪些方法?

ios - 找不到 GStreamer Xcode 10 gst.h

javascript - jQuery UI .position 使用函数

ios - 在 TableView 中不显示数据 - 当 api 没有返回数据时