如何直接在scala.js中嵌入JavaScript代码?
发布时间:2020-12-16 19:00:20 所属栏目:安全 来源:网络整理
导读:当我使用 scala.js来编写 scala代码来生成 javascript时,我发现很难将第三方 JavaScript代码包装到Scala对象中. 有没有直接嵌入一些JavaScript代码?例如作为字符串? 解决方法 不,没有,故意. “嵌入式”JavaScript代码中的标识符如何绑定到周围的Scala.js代
当我使用
scala.js来编写
scala代码来生成
javascript时,我发现很难将第三方
JavaScript代码包装到Scala对象中.
有没有直接嵌入一些JavaScript代码?例如作为字符串? 解决方法
不,没有,故意. “嵌入式”JavaScript代码中的标识符如何绑定到周围的Scala.js代码中的标识符?这绝对没有意义.
丑陋的解决方法:js.eval 显然,您可以将JavaScript代码作为参数嵌入到 import scala.scalajs.js def foo(x: Int): Unit = js.eval("console.error('hello');") 但是js.eval总是在全局范围内评估(不在你调用它的范围内),所以这不工作: def foo(x: Int): Unit = js.eval("console.error(x);") // x undefined here 好的解决方案:js.Dynamic 虽然您不能在Scala.js代码中嵌入任意JavaScript代码,您可以使用 import scala.scalajs.js import js.DynamicImplicits._ import js.Dynamic.{global => g} def foo(x: Int): Unit = g.console.error(x) 你甚至可以写这样的疯狂的JavaScript-ish代码: if (g.console) (g.console.error || g.console.log).call(g.console,x) 例如,如果你想对控制台或console.error不够稳健. 这种方法的优点是标识符的正常绑定规则.而且你不用诉诸字符串来完成这项工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |