Chr*_*phy 4 javascript scala.js
我使用a Page.scala
来启动Scala.js应用程序的客户端.因此Page.scala
取代了index.html.Scalatags raw
函数允许包含实际的JavaScript.在Scalatags文档中,示例是alert('Hello!').我实际上有一些JavaScript可以解决浏览器的问题,但是说"你好!" 一开始就好.JavaScript本身就是这里的get_browser_info()
功能.
所以我的问题是,我可以在Scala代码中调用这一点JavaScript吗?这是一种明智的方式来发现用户正在使用的浏览器吗?我想将此信息发送回服务器.
当然我可以将函数转换为Scala,但是检查浏览器的JavaScript并不容易让我阅读 - 我从来都不是一个JavaScript程序员.
翻译会很棒,即使它几乎只能回答核心问题.
编辑@sjrd给出了启动Scala代码的答案.为了给出完整的图片,这就是Page.scala的样子:
object Page{
val boot =
"simple.MyScalaClient().main(document.getElementById('contents'))"
val browserVersionFn = "<script>function get_browser_info(){var ua=navigator.userAgent ... version: M[1]};}</script>"
val skeleton =
html(
head(
meta(charset:="utf-8"),
script(src:= "/myappname/myappname-fastopt.js"),
link(
rel:="stylesheet",
href:="http://yui.yahooapis.com/pure/0.5.0/pure-min.css"
)
),
body(
style := "margin:30",
onload := boot,
div(id:="contents"),
raw(browserVersionFn)
)
)
}
Run Code Online (Sandbox Code Playgroud)
执行脚本之后,get_browser_info
就像任何JavaScript库一样,从Scala.js的角度来看.因此,您可以以动态类型的方式调用它,如下所示:
val browser = js.Dynamic.global.get_browser_info()
val name = browser.name.asInstanceOf[String]
val version = browser.version.asInstanceOf[String]
Run Code Online (Sandbox Code Playgroud)
或者您可以定义您喜欢的静态类型外观.
归档时间: |
|
查看次数: |
617 次 |
最近记录: |