2011-02-23 100 views
8

我想加载jquery到犀牛中,如链接here所示。不过,我不断收到以下错误:jquery在犀牛

line 1086: uncaught JavaScript runtime exception: TypeError: Cannot call method "importNode" of null 

我认为这是jQuery是无法完全加载 - 但我不知道为什么。我使用的是作者在源代码管理中发布的同一个index.html文件。

这里是我的犀牛控制台跟踪:

js> load("/temp/env.js"); 
js> window.location = '/temp/index.html'; 
/temp/index.html 
js> load("/temp/jquery.js"); 
js: "/temp/jquery.js", line 1086: uncaught JavaScript runtime exception: TypeError: Cannot call method "importNode" of null 
    at /temp/jquery.js:1086 
    at /temp/jquery.js:1079 
    at /temp/jquery.js:16 
    at <stdin>:41 

任何想法?

回答

5

我正在使用env.js文件的OLD版本。事实证明,作者真的跑了它,并将其移动到它自己的网站等,等等。

新东西是here

一旦我开始使用它,它是与jQuery 1.5黄金。

+0

我试过你的答案,但即时通讯仍然得到3运行时错误我试图加载所有版本的jquery,但没有成功做同样的事情....请帮助我.... .... 1在提前 – Wazzzy 2011-04-14 06:30:33

+0

我唯一可以建议的是使用这两个库的最新版本,这是我如何工作。但需要注意的是,虽然它可能在Rhino控制台中工作,但请记住,像'load'这样的函数只能在Rhino shell中使用,并且不能在动态(从java运行时)代码中调用。祝你好运。 – javamonkey79 2011-04-15 17:30:40

+0

感谢您的帮助。我很感激它.... – Wazzzy 2011-04-15 18:27:02

3

我不认为jQuery(和许多其他Web JS库)将在Rhino中工作,因为JavaScript运行时不提供像“文档”,“导航器”等预期的“浏览器全局”。错误消息你的列表表明该库正试图读取Rhino环境中不存在的某个(可能是浏览器)对象的属性(或称为方法)。

“env.js”项目应该完全实现这种浏览器环境模型,但它似乎是实验性的,可能与您试图使用的jQuery版本不兼容。

+0

你能不能设置它们不知何故?我认为这可能是作者的env.js背后的意图。 – javamonkey79 2011-02-23 09:31:07

+0

更令我感到困惑的是,jQuery dist我没有任何东西在1086行似乎有关 - 我无法在任何地方找到'importNode'。 :| – javamonkey79 2011-02-23 09:35:25

-1

我相信jQuery在Rhino中没用 - 你既没有DOM也没有Ajax。 JavaScript 5(在Rhino 1.7R3中支持)有许多所需的恐惧,比如forEach()或map()等JSON全局对象或数组方法。

+0

你可以加载一个外部文件,然后你将有一个DOM遍历。 – isomorphismes 2012-11-04 23:16:09

+1

http://www.envjs.com/doc/guides: “Envjs”的目标是为浏览器提供一个高度可移植的JavaScript实现,作为脚本环境(通常称为**'无头'浏览器**)“。 – isomorphismes 2012-11-04 23:18:34

3

我成功地从这里运行在Rhinojs使用说明jquery

http://geek.michaelgrace.org/2011/09/rhino-and-envjs/

我的步骤:

wget ftp://ftp.mozilla.org/pub/mozilla.org/js/rhino1_7R2.zip 
wget http://www.envjs.com/dist/env.rhino.1.2.js 
wget http://code.jquery.com/jquery-1.8.2.js 
unzip rhino1_7R2.zip 
java -jar rhino1_7R2/js.jar 
load("env.rhino.1.2.js"); 
load("jquery-1.8.2.js");