如何在C#中使用Jint加载JavaScript文件?

时间:2011-08-14 19:24:04

标签: c# javascript jint

我想使用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

5 个答案:

答案 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);
    }
}