我想使用文档(字符串形式)或URL加载DOM,然后对它执行javascript函数(包括jquery选择器).这将完全是服务器端,正在进行中,没有客户端/浏览器.
基本上我需要加载dom然后使用jquery选择器和text()&type val()函数从中提取字符串.我真的不需要操纵dom.
我看过.Net javascript引擎,如Jurassic和Jint,但都不支持加载DOM,因此不能做我需要的.
我愿意考虑非.Net解决方案(node.js,ruby等),如果它们存在,但我们更喜欢.Net.
编辑 下面是一个很好的答案,但目前我正在尝试不同的路线,我试图将envjs移植到侏罗纪.如果我可以开始工作,我认为它会做我想做的事,请继续关注....
我想使用Jint加载一个JavaScript文件,但我似乎无法搞清楚.文档说我可以做类似的事情engine.run(file1)
,但它似乎没有加载任何文件.我是否需要对文件名做些特别的事情?
这是我的JavaScript文件:
// test.js
status = "test";
Run Code Online (Sandbox Code Playgroud)
这是我的C#
JintEngine js = new JintEngine();
js.Run("test.js");
object result = js.Run("return status;");
Console.WriteLine(result);
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)
如果我手动输入代码Run
就行了.
object result = js.Run("return 2 * 21;"); // prints 42
Run Code Online (Sandbox Code Playgroud) 在C#中使用IActiveScriptParse32 :: ParseScriptText时,有人遇到过内存泄漏问题吗?我需要一个能够解析JavaScript代码的ScriptEngine。(除已使用的内存外,一切正常
问题是,传递的JavaScript代码越长,函数“ ParseScriptText”分配的非托管内存就越多。
我不知道如何释放分配的空间。我实际上在解析脚本后已经运行了Marshal.ReleaseComObject(parse32),但是以某种方式使用的内存不再减少。
我在Codeplex 看过jint.看起来很有趣.你用过吗?你认为0.8.4稳定可用吗?(生产质量?)
假设我有一些 .NET 代码......
public class EventEnvelope
{
public Dictionary<string, string> Headers { get; set; }
public byte[] Body { get; set; }
}
public class EventSelector
{
public Predicate<Dictionary<string, string>> Selector { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我想将此事件选择器发送到一个不是用 .NET 编写的事件代理。
我如何以跨平台的方式序列化这个谓词,以便用另一种语言编写的程序可以重建谓词并执行它?
我曾想过尝试编写一个序列化程序,它将谓词写出一些 javascript,然后让 rhino 或 jint 解释并在代理处执行它。
或者也许有一种实际的跨平台方式来表示我不知道的谓词?
你怎么认为?
在 RavenDB 5.4+ 中,我想使用 Raven 的 Npgsql 内置工厂配置一个SQL ETL 任务,将数据卸载到 PostgreSQL 数据库。我遇到的问题是我希望将整个文档 ( this
) 存储在jsonb数据列中。
问题:如何实现将整个文档(例如this
下面的 ETL 转换示例中的)存储到 Postgres?
我的目标是不必Foo
手动指定对象的字段/列。
Postgres 表示例:
create table public.foo
(
id text,
data jsonb
);
Run Code Online (Sandbox Code Playgroud)
RavenDB 中的 ETL 转换脚本示例:
loadToFoo ({
id: id(this),
data: this // <-- the issue
});
Run Code Online (Sandbox Code Playgroud)
这会导致异常:
Npgsql.PostgresException (0x80004005): 42804: 列“data”的类型为 jsonb,但表达式的类型为文本
我尝试过以下替代方案:
data: JSON.parse(this)
Error:
System.ArgumentException: Expected string but got Symbol
---
data: JSON.stringify(this)
Error:
Npgsql.PostgresException (0x80004005): 42804: column "data" …
Run Code Online (Sandbox Code Playgroud) 我想了解Jint是一个用C#编写的JavaScript Intrepreter是如何工作的.特别:
我正在使用JINT(https://github.com/sebastienros/jint)开发一个C#项目,我需要在我的JS上创建一个计时器,这样每次定时器时间设置结束时它就能在我的javascript上执行一个函数.我怎么能做到这一点?我使用了setInterval或setTimeout函数,但似乎它们不是JINT的一部分,因为它基于ECMASCRIPT,并且这些函数不是本机的.
谁能告诉我怎么能这样做?
谢谢!!
jint ×10
c# ×7
javascript ×7
.net ×4
interpreter ×2
antlr ×1
debugging ×1
envjs ×1
jurassic ×1
npgsql ×1
postgresql ×1
predicate ×1
ravendb ×1
scriptengine ×1
server-side ×1
timer ×1
xna ×1