我想使用Jint加载JavaScript文件,但我似乎无法弄明白。文档说我可以做engine.run(file1)
之类的事情,但它似乎没有加载任何文件。我是否需要对文件名做些特别的事情?
这是我的JavaScript文件:
// test.js
status = "test";
这是我的C#
JintEngine js = new JintEngine();
js.Run("test.js");
object result = js.Run("return status;");
Console.WriteLine(result);
Console.ReadKey();
如果我在Run
中手动输入代码,则可以使用。
object result = js.Run("return 2 * 21;"); // prints 42
答案 0 :(得分:3)
我找到了一种解决方法,我自己手动将文件加载到文本中,而不是按照此处提到的名称加载它:http://jint.codeplex.com/discussions/265939
StreamReader streamReader = new StreamReader("test.js");
string script = streamReader.ReadToEnd();
streamReader.Close();
JintEngine js = new JintEngine();
js.Run(script);
object result = js.Run("return status;");
Console.WriteLine(result);
Console.ReadKey();
答案 1 :(得分:2)
我个人使用:
js.Run(new StreamReader("test.js"));
紧凑而且正常工作。
答案 2 :(得分:0)
尝试
using(FileStream fs = new FileStream("test.js", FileMode.Open))
{
JintEngine js = JintEngine.Load(fs);
object result = js.Run("return status;");
Console.WriteLine(result);
}
答案 3 :(得分:0)
更简洁(使用您的代码)
JintEngine js = new JintEngine();
string jstr = System.IO.File.ReadAllText(test.js);
js.Run(jstr);
object result = js.Run("return status;");
Console.WriteLine(result);
Console.ReadKey();
答案 4 :(得分:0)
语法已更改。使用 Jint 3.0.0-beta 时,请使用 Execute 方法而不是 Run。
const box = document.querySelectorAll('.nav_sidebar_link');
let prevActive = localStorage.getItem('activeId');
if(prevActive) document.getElementById(prevActive).classList.add('nav_sidebar_link_active')
for (let i = 0; i < box.length; i++) {
box[i].onclick = function() {
for (let j = 0; j < box.length; j++) {
box[j].classList.remove('nav_sidebar_link_active');
}
this.classList.add('nav_sidebar_link_active');
localStorage.setItem('activeId', this.id);
}
}