问题标签 [spidermonkey]

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.

0 投票
5 回答
23650 浏览

javascript - 在 Ubuntu 上获取 spidermonkey js 的最佳方法?

我需要在我的工作机器上安装 Spidermonkey JS 引擎。我正在处理的项目有一个需要 Spidermonkey 或类似 js 二进制文件的 jslint 脚本。我尝试从源代码编译 Spidermonkey 并陷入依赖地狱。我尝试从 ubuntu 存储库安装 rhino 包,结果发现它很慢而且损坏了。今天早上,我成功编译了谷歌的 V8 引擎,并按照这里的说明构建了 v8jslint:

http://blog.stevenreid.co.uk/2011/06/27/jslint-command-line-tool-powered-by-v8/

v8jslint 有效,但一次只会 lint 一个文件。例如,

如果我在 foo 下有 a.js、b.js 和 c.js,v8jslint 只会 lint a.js。简单修复:我可以为此编写一个 bash 脚本。更大的问题是 v8jslint 与我们构建服务器上的 Spidermonkey jslint 不兼容。有没有人在最新版本的 Ubuntu 上成功构建 Spidermonkey,或者知道一个好的解决方法?

0 投票
2 回答
350 浏览

firefox - 使用带有 Firefox 5 的自定义 SpiderMonkey 构建

我正在尝试构建和使用我在 Windows 机器上使用 firefox 5 编译(用于我的学术研究)的 SpiderMonkey,但是当我尝试运行 firefox 时出现“mozjs.dll 中缺少 JS_InitCTypesClass 函数”错误。

我下载了 SpiderMonkey 代码并使用 MozillaBuild 构建了它(没有任何更改)。比我将新 DLL 复制到 firefox 目录(将 DLL 名称重命名为 mozjs.dll)并尝试执行 firefox。在这一点上,我得到了我写的错误。

另外,使用导出函数查看器检查我发现原来的mozjs.dll有777个导出函数,而我编译的只有771个函数,所以我猜这个函数真的不见了。

任何想法如何构建自定义 SpiderMonkey 并将其与 FF5 一起使用?

非常感谢你的帮助!

0 投票
2 回答
122 浏览

javascript - 连接到 Spidermonkey 的管道无法正常工作

我已经安装了最新版本的 Spidermonkey (JavaScript-C 1.8.5+ 2011-04-16),并注意到一个奇怪的怪癖,你可能知道答案。

过去,如果我这样做:

结果将返回为:

但是,现在当我运行相同的命令时,我得到的返回输出是:

如您所见,有 3 行输出,而不仅仅是 1 行。

这通常不会是一个问题,但我正在使用一个特定的 CMS,它没有处理这个异常,所以只是出错了。

有解决方法吗?我应该只安装旧版本吗?

PS我知道Spidermonkey可以选择“e”(即js -e“print('hi')”)来运行内联代码,但我使用的CMS再次不能那样工作:\

0 投票
1 回答
181 浏览

firefox - 蜘蛛猴字节码中的未知操作码

我一直在检查蜘蛛猴的字节码以进行学术研究。我从这个文件中得到了字节码列表:http: //mxr.mozilla.org/mozilla-central/source/js/src/jsopcode.tbl#106

当我开始查看网站并查看它们的字节码时,我注意到至少有三个操作码不在 tbl 文件中:236、240、235(这是我目前发现的)。

没有人知道他们的意思,或者我什么时候可以找到更完整的tbl文件???

谢谢!:-)

0 投票
1 回答
1166 浏览

javascript - 修改 Chrome 提供的 V8 JavaScript 引擎

我希望支持 Chrome 提供的 V8 JS 引擎通常不支持的新 API。是否可以通过调整 Chrome 提供的 V8 来做到这一点。

我愿意使用 Firefox 提供的 Spidermonkey。我只是希望流行的浏览器支持这个 API。

我试着在谷歌论坛和这里寻找答案,但他们中的大多数人都在谈论嵌入 V8。

0 投票
2 回答
601 浏览

javascript - 从 JavaScript 代码中提取字符串

在我的 C++ 应用程序中使用嵌入式 SpiderMonkey 我想从 JavaScript 代码中提取所有字符串。JavaScript 代码如下所示:

C++ 代码如下所示:

所以我的问题是,在 SpiderMonkey 执行 JavaScript 之后,我如何从变量bar中提取字符串(提取的值应该是“漂亮的东西”)并在我的常规 C++ 代码中使用它?我想我必须先评估脚本,然后以某种方式从 JavaScript 变量中提取字符串。我不知道如何使用 SpiderMonkey 提取字符串。

我的第二个问题:
http
: //siliconforks.com/doc/parsing-javascript-with-spidermonkey/ 这个 SpiderMonkey JavaScript 解析器是为 SpiderMonkey 1.6 编写的。最新的 SpiderMonkey 怎么能做到这一点,因为用于解析的 API 发生了变化?

提前谢谢,
Goran

0 投票
3 回答
1853 浏览

javascript - 创建函数是否消耗更多内存

人们建议使用原型的主要原因之一.foo是在原型的情况下创建一次,而this.foo在使用其他方法时创建多次。

然而,人们期望口译员可以优化这一点。foo因此在案例 A中只有一个函数副本。

当然,由于闭包,您仍然会为每个对象拥有一个唯一的作用域上下文,但与每个对象的新函数相比,这具有更少的开销。

现代 JS 解释器是否优化了案例 A,所以只有一个函数副本foo

0 投票
1 回答
658 浏览

javascript - SpiderMonkey 堆栈跟踪中的函数名

我正在使用 SpiderMonkey 引擎 1.8,我对它创建堆栈跟踪的方式不满意。我们偶尔会收到来自服务器的 JavaScript 文件中自动生成的函数名称,这些名称并不真正可读。在客户端,我可以访问其他功能,使它们对人类更具可读性。

有谁知道 SpiderMonkey 如何构建一行堆栈跟踪?有什么办法可以影响这个吗?

  • 函数的name-property 是只读的
  • WebKitdisplayName似乎在 SpiderMonkey 中不起作用(还)

编辑:我查看了SpiderMonkey 的来源,哇,我不知道是不是只有我一个人,但 C++ 代码几乎无法阅读。好吧,我对 C++ 没有太多经验,但是很难找到通过所有这些文件的方法。我没找到办法...

所以,拜托,这取决于你:)。

0 投票
1 回答
2398 浏览

event-handling - Javascript 内部结构:事件是如何实现的?

我的问题与 JS 引擎如何实现异步事件模式有关,当我们在 dom 上执行诸如绑定事件处理程序之类的操作时,比如说单击事件?

他们是否有一个单独的线程来监听所有的点击事件?当事件确实发生时,他们是否引用绑定列表并将事件冒泡?

与 Ajax 类似,异步网络调用,浏览器跨越一个新线程,该线程将开始监听来自服务器的数据,当收到响应时,它会调用成功处理程序?

0 投票
3 回答
419 浏览

javascript - 在 Ubuntu Lucid 上自动从源代码编译 CouchDB

Mozilla SpiderMonkey 不再作为独立包在 Ubuntu Lucid 中提供。根据此链接,您必须使用提供的库xulrunner,并对 CouchDB 配置脚本说:

这很好,但我需要自动执行此操作。在我的情况下,这不是1.9.2.3,但是1.9.2.23,无论如何这将在将来更改,恕不另行通知。我有一个安装 CouchDB 的无人值守脚本,我想调整它以支持 lucid。

我可以找图书馆:

并从那里派生libinclude目录。但这看起来很容易出错(libmozjs.so系统中还有其他什么,...)

理想的事情是问问xulrunner自己。是否可以查询其libinclude目录在哪里?(which xulrunner给我一串 5 个(!)符号链接,无论如何都不会指向libandinclude目录)

或者更好的是,有没有办法在 Lucid 中以独立的方式安装 SpiderMonkey 库?(除了从源代码编译)