如何在不使用Script.Literal函数的情况下将指定JavaScript转为Script#?
转换JavaScript的Message监听代码到Script#(无Script.Literal)
嘿,我刚好对Script#的使用有不少经验,这就帮你把那段原生JS代码转换成合规的Script#实现,完全不用Script.Literal:
首先,Script#是通过C#语法生成JavaScript的,我们可以直接用它提供的DOM封装类来实现窗口事件监听:
using ScriptSharp; using ScriptSharp.Dom; public class MessageHandler { public void InitializeMessageListener() { // 对应原生window对象,添加message事件监听 Window.Current.AddEventListener("message", OnMessageReceived, false); } private void OnMessageReceived(MessageEvent eventArgs) { // 获取消息内容,对应原生e.data string message = eventArgs.Data.ToString(); // 弹出消息,对应原生alert() Window.Alert(message); } }
关键细节说明:
Window.Current:Script#中用来指代浏览器全局window对象的封装类,和原生JS的window完全对应。AddEventListener:和原生JS的同名方法参数逻辑一致,第三个参数false表示在冒泡阶段触发事件,和你的原生代码行为匹配。MessageEvent:Script#封装的message事件参数类型,它的Data属性就是原生事件对象里的e.data,调用ToString()就能拿到消息字符串。Window.Alert:对应原生JS的alert()函数,完全不需要手写原生代码片段。
这样实现的代码编译后生成的JavaScript,和你提供的原生代码功能完全一致,而且全程没有用到Script.Literal,完全符合你的要求。
内容的提问来源于stack exchange,提问作者Tengmo
相关产品推荐
相关产品推荐

