- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在跟进 this answer :
我设法在 Java 上从 Rhino Engine 运行简单的 JavaScript
代码。
但是说到 D3.js ,例如:
var svg = d3.select("body").append("svg")
如您所见,d3
要求 DOM 首先可用。
因此,出于这个原因,JSDOM 应该是解决方案。
但是JSDOM
恰好依赖于requirejs
来自 RequireJs
网站:
The r.js file allows you to run the optimizer as well as run modules in Node, Rhino or xpcshell.
然后我的 Java Rhino 代码如下所示:
FileReader fr1 = new FileReader("lib/r.js");
FileReader fr2 = new FileReader("lib/jsdom.js");
engine.eval(fr1);
engine.eval(fr2);
但现在我最终会遇到这样的错误:
ReferenceError: "arguments" is not defined.
然后我找到了this nice answer:
然后我的代码看起来像这样:
cx.evaluateReader(sharedScope, new FileReader("lib/r.js"), "require", 1, null);
cx.evaluateReader(sharedScope, new FileReader("lib/loader.js"), "loader", 1, null);
cx.evaluateReader(sharedScope, new FileReader("lib/jsdom.js"), "loader", 1, null);
Error: Module name "fs" has not been loaded yet
这基本上意味着 jsdom.js
本身正在引用:
var fs = require('fs');
var path = require('path');
var URL = require('url');
所以,看来我只需要下载所有这些。
但是 fs - 是关于文件系统的。这意味着它依赖于 NodeJs native 实现。这对我在纯 Java 和纯 JS 方面的尝试不利。
更新:
目前我正在研究这个方向:
https://github.com/nodyn/jvm-npm
http://nodyn.io/
问题是:如何将 JSDOM 加载到 Rhino 以让 D3.js 生成我的 SVG?
再次 Java Rhino -> D3.JS -> JSDOME -> RequireJS -> FS => SVG ?
“或”:How Mozilla Rhino can use nodejs "fs" module?
我知道我可以使用 PhantomJS ,但我正在寻找 Java 粘性的东西。更轻量级,不涉及外部进程启动。
最佳答案
JsDom
可能是一个糟糕的选择,因为它依赖于 Node 和 Google 的 V8 JavaScript 引擎的许多内部功能。 Env.JS应该是一个更好的选择,但如果它不起作用,那么你可能就不走运了。它可能无法工作,因为它本质上是一个卡住的项目,最后一次发布是在 2010 年。您必须在 Node 中运行您的 JavaScript。或 Phantom ,或使用基于 Java 的解决方案生成 SVG,例如 Apache Batik .
顺便说一句,JsDom 中的 require
与 require.js
不同,而是 a build-in Node.js function .
关于java - 在 Java 上从 Rhino 启动 jsdom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24557308/
我对如何使用 jsdom 仍然一头雾水。 jsdom.env() 和 jsdom.jsdom 有什么区别? 最佳答案 The readme file解释说 jsdom.env is built for
我有一个使用 ES2015 模块语法的代码库,即。 从“bar”导入 foo。它也有这样的代码: // setup.js var foo = window.foo || ''; 我想使用 jsdom
有没有一种方法可以将 HTML 传递给 jest 内置 JSDOM 中的构造函数,例如 const dom = new JSDOM('Hello world'); - in orginal JSDOM
我正在使用 mocha 和 jsdom 对 JavaScript 库进行单元测试。库中的一个模块具有不同的行为,具体取决于文档是否准备好。为了测试这种行为,我需要模拟一个尚未完全准备好的文档(即它的
我想开始使用“jsdom”包jsdom:https://github.com/tmpvar/jsdom 我在文档中看到以下代码片段: var jsdom = require("jsdom"); jsd
Background 因此,我一直在遵循教程来了解 JS 测试框架,并了解到要测试 Web UI,最好使用 JSDOM 库,因为它不需要浏览器并带来 DOM,然后可以以 headless 方式执行。
我正在尝试使用 jsdom 来分析一些 html 内容。我看到的示例使用基于 html 内容的 jsdom.jsdom 文档的 .createWindow() 方法。 但是当我尝试按照这些示例进行操作
我正在尝试使用 Ember、Brunch 和 JSDom 进行 headless 测试。我正在使用 ember-brunch-skeleton 生成应用程序。 https://github.com/f
我已经安装了webppl-agents库(以及 webppl 和 webppl-dp )并尝试运行命令行测试,但我遇到了一些麻烦。 npm 文件模块 (1) 中的 jsdom 似乎存在依赖性问题(2)
在 express.js 中使用 jsdom.jsdom() 我创建了一个带有一些“基本”布局标记的文档,并将一些客户端库(例如 jQuery)附加到其窗口。 只需进行一次此设置就好了。 问题是窗口文
我创建了一个非常简单的页面,仅显示一条消息,因为我正在尝试测试 JSDOM 以使用 document。但是,我收到以下错误。 首先,我在网上看到了无数的例子,除了Stack Overflow上发布的问
这个问题已经有答案了: What do querySelectorAll and getElementsBy* methods return? (12 个回答) 已关闭 4 年前。 我正在尝试使用 T
根据JSDom README ,您可以传递一个 Javascript 字符串数组来执行,但似乎此功能对我不起作用。 这是我的 Node 应用程序: var fs = require('fs'); va
我正在使用 jsdom解析html const data = dom.window.document.querySelector('.row h1').textContent 在那种特殊情况下,我的数
所以我尝试用 jsdom 设置 mocha 测试,经过多次调试尝试,我将问题缩小到 jsdom 执行绝对 URL 脚本(例如 http://code.jquery.com/jquery- 2.1.3.
下面是使用 script 参数的 jsdom 代码的最小示例。尽管我尝试过寻找一种引用外部 JS 的方法,但我还是不断收到此消息 ReferenceError: exVar is not define
我似乎无法让 jsdom 执行外部脚本,而且我似乎找不到任何具体示例。当我调用我的测试函数时,我没有收到任何错误,但什么也没有发生。 这是我的代码: var window = jsdom.js
交叉发布自 https://github.com/tmpvar/jsdom/issues#issue/127 我将在第二天左右发布一个最小的测试用例 - 但我想看看是否有其他人遇到同样的问题 - 或者
我正在使用 jsdom 通过我的 Node.js 应用程序加载网页。有时,我没有获得完整的 DOM,因为一些网页使用脚本在 onload 事件被触发后动态加载它们的内容。 jsdom 默认情况下停用这
我正在尝试使用 jsdom 加载本地 HTML 文件,这是代码 var config = { file: "filename", scripts: ["node_modules
我是一名优秀的程序员,十分优秀!