问题标签 [jurassic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 使用侏罗纪时获取 JS 错误位置
我正在使用侏罗纪 JS 引擎在 .NET 应用程序中运行一些 JS 代码。不幸的是,在运行代码时出现异常,这是由某处未定义的值引起的。但是我怎样才能找到确切的位置呢?请注意,我无法在不同的环境中运行它,因为我使用从 .NET 导出的方法,所以我想找到一种方法来获取运行时错误的位置。
我正在使用ScriptSource
该类加载/评估文件,以便它们具有附加的文件名。事后我仍然没有得到任何输出 - 我错过了什么吗?
javascript - Load a DOM and Execute javascript, server side, with .Net
I would like to load a DOM using a document (in string form) or a URL, and then Execute javascript functions (including jquery selectors) against it. This would be totally server side, in process, no client/browser.
Basically I need to load the dom and then use jquery selectors and text() & type val() functions to extract strings from it. I don't really need to manipulate the dom.
I have looked at .Net javascript engines such as Jurassic and Jint, but neither support loading a DOM, and so therefore can't do what I need.
I would be willing to consider non .Net solutions (node.js, ruby, etc) if they exist, but would really prefer .Net.
edit The below is a good answer, but currently I'm trying a different route, I'm attempting to port envjs to jurassic. If I can get that working I think it will do what I want, stay tuned....
.net - 可能在另一个线程执行外部库中的方法时产生/睡眠/限制另一个线程 - 特别是侏罗纪?
我正在使用一个名为Jurassic的 .Net JavaScript 实现在我用 VB.Net 编码的 .Net 4 WPF 应用程序中运行用户控制的脚本 - C# 答案很好。脚本引擎在自己的线程上运行,并为脚本提供 API 以与我的应用程序交互。在用户执行导致无限循环并取出处理器核心的脚本之前,这一切都非常有效。
在线程中运行的方法看起来像这样,但有更多不相关的位:
我在另一个线程上有一个监控类,它通过记录脚本引擎线程何时唤醒和睡眠并标记任何运行时间过长的线程来检测正在使用大量资源的脚本引擎线程。
一旦监视类标记了一个线程,我就有点卡住了。目前我向用户解释情况并给他们终止线程的选项。我使用 Thread.Abort() 执行此操作。但是,我宁愿让线程继续运行,但以某种方式阻止它使用这么多处理器时间。
这里的问题是,一旦线程处于这种状态,我就无法在线程上运行任何代码,因为在侏罗纪代码中的 CallGlobalFunction() 方法中发生了无限循环,所以我不能只将 Thread.Yield() 添加到循环中。我曾短暂考虑过破解侏罗纪代码,看看是否有任何方法可以做到,但这将非常困难,而且很可能是不可能的。
到目前为止,我能够与线程交互的唯一方法是使用如上所述的 Thread.Abort() 和已弃用的 Thread.Suspend()。
那么有什么方法可以在线程执行方法时产生线程,还是我只需要杀死它?
感谢您的帮助,我希望这是有道理的,
山姆。
额外信息:
我关心保持线程活跃的原因是因为编写脚本的用户和运行它的用户可能不一样,我希望让运行线程的用户尽可能保持流畅的体验. 也可能存在单个 JavaScript 函数会运行很长时间的合法情况,我不想杀死它,我只想停止被允许占用资源。
涉及停止线程以降低系统速度但仍显示高 CPU 使用率的解决方案并不可取,因为我不希望用户错误地认为应用程序是资源密集型的。
javascript - 如何将 JavaScript 编译器(如 Jurassic、ClearScript)集成到 Visual Studio 2010 shell
我有一个项目,我必须支持从 Jurassic 或 ClearScript 或任何其他开源 java 脚本编译器(用于 .net)到 Visual Studio 2010 隔离 shell 的 javascript 调试。我的要求是我可以使用 F5、F10 并放置一个断点,以便我可以调试自定义 java 脚本代码。我在网上搜索了很多,但找不到任何有用的东西:-(。我已经下载了 IronPthyon 隔离外壳项目,但它看起来非常复杂,我只想将已经实现的编译器(侏罗纪或 clearscript)集成到隔离外壳中。
提前非常感谢。
javascript - 如何在 wp7 和 wp8 上运行侏罗纪(js 引擎)
我尝试使用nuget在我的项目上安装侏罗纪,好吧,在windows 8上它没有问题,但在windows phone 7和windows phone 8中都不会编译......
任何想法,我知道(从网站上的评论)在 wp7 和 wp8 上可以工作,但我真的不明白如何?
谢谢
javascript - 在不会在网页内运行的 Javascript 文件中包含 jQuery
我正在使用 Javascript 创建将由 C#.NET 应用程序调用的独立脚本。它不会在浏览器中运行,而是使用侏罗纪引擎。
我希望能够在这个脚本中使用 jQuery。我通常使用 HTML<script>
标记引用 jQuery,但是如何将 jQuery 文件包含在独立的 Javascript 文件中?
我在想PHP的include()
功能。
javascript - 使用 Jurassic 预编译一个 JsRender 模板服务器端
我正在尝试从用 C# 编写的类库中预编译 JsRender 模板,使用侏罗纪脚本引擎来执行 JsRender。
这是我的代码:
我已经$.templates()
从这个页面中获取了 JavaScript 函数调用,它指出
$.templates(markupOrSelector) 返回:已编译的模板对象
我的示例 HTML 模板很简单
但是,我的代码产生了异常:
现在,我不是 100% 清楚是否可以在没有 jQuery 的情况下使用 $ 运算符。作者在他的几个示例中包含了 jQuery,但也指出 jQuery 不是必需的。
那么出了什么问题呢?在我发布此问题的同一天,从 GitHub 获取的 JsRender 版本的文档是否已过期?(我知道 JsRender 仍处于测试阶段。)或者我在滥用侏罗纪?
编辑:
我相信这实际上是一个侏罗纪问题而不是 JsRender 问题。具体来说,我认为这与侏罗纪的全局对象有关,因为 JsRender 被包装在一个通过的立即调用函数中this
,我不确定侏罗纪是否提供了this
。
看来我不是第一个面对这个问题的人。我已从本页上一篇文章中获得建议,并将我的代码更改为以下内容:
这不起作用 - 可能是因为 JsRender 的 IIF 仍然通过this
而不是window
,并且我不想修改脚本。
任何人都可以帮助推动这一进程吗?鉴于侏罗纪......我不知道......也许侏罗纪实现全局对象的方式存在一些概念上的差异,我如何从侏罗纪调用任何JsRender 函数。
javascript - 是否可以使用侏罗纪图书馆将 js 变量分配给 c# 字符串
我使用 HtmlAgilityPack 从远程 html 获取 js 脚本,如下所示;
……
JsVars 返回如下;
在 Evulate jsVars with Jurassic 之后有没有获得js_var1或js_var2的值?
javascript - 使用侏罗纪脚本引擎获取远程 JS var 的值
我的远程js文件如下
我想获得 html 的价值。我已经尝试如下,但我有错误。
javascript - 使用 Jint 运行 Js 代码时如何使用 GetValues?
我的问题很原始。但它非常有用。我检查了GitHub 上的Sebastien Ros Jint 应用程序。
如何多次 GetValue 属性?
GetValues(x,y,z...)
或GetValue("x").GetValue("y").GetValue("z")
。因为我需要 x,y,z.. 结果。不仅是 x 值。
我有一个项目,我必须运行 js 代码,但有很多 if 比较(注意它不是“if-else”,有 if-if-if 并继续......)我可以访问所有 if陈述结果。我发现有GetValue
方法。但我只能访问一个值。当我想访问“y”时,我必须使用GetValue("y")
. 但我想同时看到“x”值。也许我渴望那样GetValues("x","y","z"...)
。
我在 codeplex 上检查了侏罗纪
我使用它如下:
问题:
我如何在 myproject 中做到这一点但是使用 Jint 而不是侏罗纪?我需要 Jint multiGetValues 属性...