在Kotlin Javascript中传递参数时,'x'不是函数
我不断收到此错误: TypeError:Scraper.dumpTitle不是一个函数
而我无法弄清楚为什么…
的index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Kotlin JS Demo</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> </head> <body> <script src="out/production/lib/kotlin.js"></script> <script src="out/production/Scraper.js"></script> <!--<script>--> <!--function loaded() {--> <!--}--> <!--</script>--> <script> $(function() { Scraper.dumpTitle(document) }) </script> </body> </html>
Main.js
import kotlin.browser.document /** * * * * - */ fun main(args: Array<String>) { println("Hello") } fun dumpTitle(doc: dynamic) { println(doc.title) } fun dumpTitle1() { println(document.title) }
生成的JS
if (typeof kotlin === 'undefined') { throw new Error("Error loading module 'Scraper'. Its dependency 'kotlin' was not found. Please, check whether 'kotlin' is loaded prior to 'Scraper'."); } var Scraper = function (_, Kotlin) { 'use strict'; var println = Kotlin.kotlin.io.println_s8jyv4$; function main(args) { println('Hello'); } function dumpTitle(doc) { println(doc.title); } function dumpTitle1() { println(document.title); } _.main_kand9s$ = main; _.dumpTitle_za3rmp$ = dumpTitle; _.dumpTitle1 = dumpTitle1; Kotlin.defineModule('Scraper', _); main([]); return _; }(typeof Scraper === 'undefined' ? {} : Scraper, kotlin);
笔记
- 调用
dumpTitle1()
工作正常..所以我dumpTitle1()
的问题是只传递参数 - 没有必要指出,我可以访问Kotlin中的
document
变量,而不需要通过它,我知道…但我想传递另一个document
对象使用
如果你从JavaScript调用Kotlin函数,你需要使用@JsName
注释来给它一个稳定的名字。 看到这里的文件。
@JsName("dumpTitle") fun dumpTitle(doc: dynamic) { println(doc.title) }