如何从Kotlin代码调用Javascript函数?

时间:2017-08-29 02:12:06

标签: javascript compilation kotlin

我正在尝试将Kotlin代码编译为Javascript。在我的代码中,我需要将字符串编码为URI。我的2个变种都是失败编译:

class PlaceholderJS(prefix: String, placeholder: String?): Placeholder(prefix, placeholder) {
override fun encode(str: String): String {
    return encodeURIComponent(str)
}

在此代码编译器中找不到函数encodeURIComponent(str),所有浏览器都支持https://www.w3schools.com/jsref/jsref_encodeuricomponent.asp

替代:

class PlaceholderJS(prefix: String, placeholder: String?): Placeholder(prefix, placeholder) {
override fun encode(str: String): String {
    return URLEncoder.encode(str, Charsets.UTF_8.name())
} 

找不到Java类URLEncoder(在Java中导入文件)。这在为JVM编译时有效,但不适用于JS。

我还有Kotlin模块标有:

compileKotlin2Js.kotlinOptions.moduleKind = "umd"

1 个答案:

答案 0 :(得分:3)

我发现在Kotlin中声明Javascript函数的最新方法是:

external fun encodeURIComponent(str: String): String

一旦将它添加到Kotlin类,所有内容都可以编译而没有问题。