从Scala.js调用Javascript
发布时间:2020-12-16 18:01:59 所属栏目:安全 来源:网络整理
导读:我使用Page. scala来启动 Scala.js应用程序的客户端.因此Page.scala取代了index.html. Scalatags原始函数允许包含实际的 JavaScript.在Scalatags文档中,示例是alert(‘Hello
我使用Page.
scala来启动
Scala.js应用程序的客户端.因此Page.scala取代了index.html. Scalatags原始函数允许包含实际的
JavaScript.在Scalatags文档中,示例是alert(‘Hello!’).我实际上有一些JavaScript可以解决浏览器的问题,但是说“你好!”一开始就好. JavaScript本身就是get_browser_info()函数
here.
所以我的问题是,我可以在Scala代码中调用这一点JavaScript吗?这是一种明智的方式来发现用户正在使用的浏览器吗?我想将此信息发送回服务器. 当然我可以将函数转换为Scala,但是检查浏览器的JavaScript并不容易让我阅读 – 我从来都不是一个JavaScript程序员. 翻译会很棒,即使它几乎只能回答核心问题. 编辑 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) ) ) } 解决方法
执行脚本后,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] 或者您可以定义您喜欢的静态类型外观. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |