Tag: jsdom

如何从节点REPLparsing带有jsdom的DOM

我正在尝试编写一些DOMparsing代码来运行节点REPL环境 。 以下是SSCCE: "use strict"; var jsdom = require("jsdom"); var html="<a></a>"; function parse(html, x) { jsdom.env(html, function(errors, window) { x.window = window; }); } var x = {}; parse(html, x); console.log(x.window); 这个想法是,在调用parse函数后,我会有我的x对象中parsing的DOM可用。 当我把上面的代码放在一个j.js文件中并从REPL中加载时,我得到: > .load j.js > "use strict"; 'use strict' > var jsdom = require("jsdom"); undefined > var html="<a></a>"; undefined > function parse(html, x) […]

如何与jasmine-node一起使用jsdom.jQueryify?

用jasmine的jQueryifyfunction可以使用jasmine-node吗? 我想要做的就是使用NodeJS来testing一些依赖于DOM存在的JavaScript。 这是我尝试的一个减less的情况。 当我运行这个脚本时,jasmine-node识别这个规范,但是不运行expect() : var fs = require('fs'), jsdom = require('jsdom'), window = jsdom.createWindow(), jasmine = require('jasmine-node') describe("jQueryify", function() { it('should run the test!', function () { jsdom.jQueryify(window, function (window, jquery) { expect(1).toEqual(1) }) }) }) 或者,是否有不同的/更好的方式来testingNodeJS中的假设类似浏览器的环境?

使用node.js来刮去Windows上的网站

试图让jsdom(node.js模块)在Windows上工作。 不停地抱怨没有为我的节点版本构build。 在Linux机器上安装了节点(源代码为0.5.9,节点)。 然后我把它复制到Windows机器(在node_modules下) 仍然没有去… 有任何想法吗? 或其他parsingHTML的build议我从我从节点做的请求的回应? 通过jsdom使用jquery会很好。 干杯。

有没有人成功呈现jqPlot图表作为图像服务器端(例如与node.js)?

不幸的是我的组织仍然坚持使用IE6,但是(是的,我知道…)。 我喜欢jqPlot,但发现IE6感觉不一样。 所以,我试图解决IE6的许多漏洞和内存泄露,我想我会通过在服务器上生成图表的图像(也许是PNG)来绕过这个问题。 就我个人而言,客户端图表的交互性不如在服务器上产生图表图像caching的能力,并且在IE6上施加的压力小。它也将整齐地解决jqPlot输出不能正确打印的问题从IE6(我猜这可能是一个excanvas问题)。 但麻烦的是,我发现的服务器端解决scheme都不符合jqPlot的视觉/美学吸引力。 服务器端,我最熟悉的Perl和CPAN上可用的东西范围从function,但fugly(如Chart :: Gnuplot)美丽但无法获得(例如Chart :: Clicker,有几十个先决条件,并没有'即使经过一周的尝试,我也不想在Windows / ActiveState Perl上安装)。 谷歌告诉我,有些人可能试图使用node.js从服务器上的jqPlot生成PNG,但是我找不到任何证据certificate任何人都成功了。 我之前没有使用过node.js,所以想再次尝试一下node.js / jsdom的学习曲线,我并没有试图做一些不可能的事情。 任何build议,你可以给予赞赏(除“升级浏览器” – 这将最终发生,但不是可预见的)。

使用NodeJS和JSDOM / jQuery从片段构build一个PHP页面

我正在玩从现成的代码片段创build一个PHP页面,并修改JSDOM / jQuery页面。 例如,我有这样的代码: window.$('title').text('<?php wp_title(); ?>'); 但它插入的PHP标签逃脱。 如何让它把这个string,因为它没有逃脱? 我尝试了另一个名为Cheerio的库,代码看起来像现在工作得很好: $('title').html("<?php wp_title(); ?>"); 没有字符正在逃脱,我可以妥善保存到一个文件。 更新:我这样做的原因是,我不得不处理WordPress主题创build,我想简化过程。 由于我既不是PHP的主stream风格,也不是WordPress的主题结构,所以我想在Jade中构build一组文件,通过Express运行它们,然后用自动化的过程将它们编译为Wordpress主题。 我在这方面取得了一些成功。 现在我使用Jade mixins来打开它: +title 成这样的东西: <title><?php wp_title(); ?> 以其最简单的forms。 所以这样我可以保持我的模板容易修改,很好,愉快的工作。

在由jsdom加载的脚本中设置全局variables

我试图在Node.js中运行一些浏览器代码,以简化testing( deasync是原因)。 目前,我使用jsdom来parsing唯一的html文件。 起初,我试图让它加载脚本,它们在<script>标签中链接。 但由于相对文件path的一些愚蠢的问题,我已经切换到一个绝对path的列表传递给脚本文件作为参数jsdom.env函数。 现在我很确定,jsdom正确地find我的脚本,但是我不能在其中设置任何全局variables。 此外, console.log不在那里工作。 我已经检查过,如果通过require命令加载脚本,那么全局variables和控制台输出都按预期工作。 但与jsdom.env他们不工作。 我在Windows 7上使用Node.js 4.2.6版本。以下4个文件用于重现问题(它们位于同一个目录中): main.js – 以node.exe开头: var jsdom = require("jsdom"); require("./module"); var window = jsdom.env( '<p><a class="the-link" href="https://github.com/tmpvar/jsdom">jsdom!</a></p>', [ // "http://code.jquery.com/jquery.js", "file://" + __dirname + "/myjquery.js", "file://" + __dirname + "/script.js" ], undefined, function(error, window) { console.log("contents of a.the-link:", window.$("a.the-link").text()); console.log(global.hello, window.hello, global.hi); } ); […]

jsdom不加载外部资源

我似乎无法得到jsdom执行外部脚本,我似乎无法find任何具体的例子。 当我打电话给我的testingfunction,我没有得到任何错误,但没有任何反应。 这是我的代码: var window = jsdom.jsdom(body).createWindow(); jsdom.jQueryify(window, './lib/jquery.js', function () { console.log(window.$("#a1").text()); window.testing(); console.log(window.$("#a2").text()); }); 这是它的加载html: <html> <head> <script type="text/javascript" src="stuff.js"></script> </head> <body> Hi there <div id="a1"> </div> <div id="a2"> </div> </body> </html> 我的testingfunction: function testing() { var a2 = document.getElementById("a2"); a2.innerHTML = 'Second div'; console.log("executed"); }

jsdom:运行一个页面的javascript函数

我一直在搞jsdom,我不知道如何从HTML页面运行function。 例如,我有这样一个简单的页面: <html> <body> Hello </body> <script> function test() { document.write("Bye bye") } </script> </html> 我想从jsdom执行testfunction。 我怎么去做这个? 我试着简单地调用函数,但节点抱怨说它不存在。 jsdom.env({ url : "http://localhost:8000/test.html", features : { FetchExternalResources : ['script'], ProcessExternalResources : ['script'] }, done : function (error, window) { test(); // I'd like to do something like this. console.log(window.document.innerHTML); } });

从jsdom迁移到phantomJS? (基本的DOM创build)

M. Bostock指出nodejs的jsdom对svg的支持不够,而且对我来说不支持getBBox() 。 另外,他build议切换到nodejs的PhantomJS。 我检查出来,但这种方法对我来说是新的。 我的nodejs + jsdom脚本创build了一个虚拟的DOM,我的d3js使用它,如下所示: var jsdom = require('jsdom'); jsdom.env( // creates virtual page "<html><body></body></html>", // create my DOM hook, [ 'http://d3js.org/d3.v3.min.js', // add my online dependencies … '../js/d3.v3.min.js', // … & local ones '../js/jquery-2.1.3.min.js'], function (err, window) { //my normal JS or nodejs code here ! } ); 如何将这个nodejs + jsdom迁移到nodejs […]

用jsdom加载ajax应用程序

我正在寻找一种解决scheme来引导服务器上的客户端应用程序(用Backbone.js编写),这样我就可以为爬虫和非js使用者提供正确的内容。 我一直在玩jsdom和nodejs,试图引导应用程序,并可以加载到基本的模板内容,但应用程序似乎永远不会启动。 我已经尝试了两种不同的解决scheme来确保我拥有所有必需的依赖关系,并且正确加载了应用程序: 我尝试使用jsdom.env()与通常包括在内的所有脚本。 我尝试使用jsdom.jsdom()并确保FetchExternalResources,ProcessExternalResources和MutationEvents都是正确的。 虽然似乎没有触发window.onload事件。 我想知道,如果jsdom可能不会触发这个,或者可能调用通常被解雇后的callback? 这是一个可以在jsdom中完成的任务吗?