问题标签 [jsdom]

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 投票
1 回答
3199 浏览

javascript - Node.js 抓取,转换图片 src -> 完整 URL

我正在使用 Cheerio (https://github.com/MatthewMueller/cheerio) 来抓取网站并获取我正在从事的项目的图像。我想知道 Node.js(或其他包)是否有一种简单的方法可以将 $(img).attr('src') 转换为完全限定的 URL?有时我会得到“image.jpg”,有时会得到“../../image.jpg”,有时会得到“//somepath/image.jpg”。也许我只是缺少某种正则表达式...感谢您的时间:)

0 投票
2 回答
1990 浏览

javascript - 如何在jsdom中执行外部脚本

我在 products.js 文件中有一个方法,如下所示:

并希望在 jsdom env 回调中执行它:

执行时,它告诉我“未定义处理程序”。我接近了吗?

0 投票
1 回答
2275 浏览

jquery - jsdom:使用 jQuery 将脚本附加到正文

如何使用 jsdom 和 jQuery 将脚本附加到 DOM 主体?使用的明显答案$('body').append('<script src="..."></script>')实际上最终会在文档中添加脚本head

这是我正在测试的基本 node.js 脚本:

这会导致以下内容:

有趣的是,如果您在其中添加了一个空格,<sc ript src="..."></script>则会正确附加,所以某些东西(我希望是 jsdom)正在劫持这个脚本,因此它可以添加 cachebuster(?) 并将其放在标题中。是什么导致了这种情况,我该如何防止它发生,所以它会附加脚本?

物有所值,

0 投票
0 回答
1137 浏览

javascript - 使用 jsdom 和 jasmine-node 未定义的窗口

我有一个文件runspecs.js初始化一些全局对象,如窗口和文档

现在我在 specs 目录下的唯一文件是 socrates.spec.coffee 及其编译文件 socrates.spec.js:

现在,由于新的苏格拉底没有失败,我们知道至少 global.Socrates 正在通过。它使用 document 和 document.cookie,所以这些也没关系。为什么窗口未定义?

0 投票
1 回答
1486 浏览

node.js - Node.io、JSDOM 还是 PhantomJs ?或者,YQL-data.html.cssselect?

我需要爬取特定的网站以挖掘出一些相关信息。看起来首先我必须搜索该站点以获取相应的 URL,当被抓取时会给我详细的信息。

假设,搜索 url 是

这意味着,位置和页面可以有city2、city3等。category可以是category2、category3等。

我收集了所有可以递增的城市、类别、位置和页面,直到结果不为空。

得到所有 URL 后,我将不得不从每个 URL 中挖掘出详细信息。我已经看到某些必要的信息作为 javascript 的一部分提供。

现在,我已经看到了 node.io、jsdom 和 phantomjs。我也看过yql。由于我是新手,请根据您的经验建议我,在这种情况下哪个是理想的。

如果你能举出一些例子,那就太棒了。

0 投票
2 回答
11882 浏览

node.js - jsdom - document.querySelector 已启用,但文档中缺少

我想使用 JSDo 来执行一些基于服务器的 DOM 操作。但是,尽管明确启用了 querySelector,但它在创建的文档中是未定义的:

然而:

退货

如何使用 jsdom 使 document.querySelector 正常工作?

0 投票
0 回答
637 浏览

jquery - Nodejs + jsdom 模块,错误对象# has no method '$'

I am attempting to make a simple nodejs client that will eventually crawl a given reddit users profile history. Right now i am trying to use the jsdom module to extract the URL for the ne

I am attempting to make a simple nodejs client that will eventually crawl a given reddit users profile history. Right now i am trying to use the jsdom module to extract the URL for the next page of results on a given users profile.

I am currently working in ubuntu 12.10 and my versions of npm and nodejs are current.

Here is the code that i have so far. I will include the error message below.

Now for the error message that i am getting after running the client.


There's an interesting pattern worth mentioning here: a JavaScript constructor may return any object (not necesserily this). One could create a constructor function, that returns a proxy object, that contains proxy methods to the "real" methods of the "real" instance object. This may sound complicated, but it is not; here is a code snippet:

The nice thing is that the proxy creation can be automated, if we define a convention for naming the protected methods. I created a little library that does exactly this: http://idya.github.com/oolib/

0 投票
1 回答
1381 浏览

jquery - jsdom和jquery修改dom元素的css样式

我一直在我的 node.js 服务器上使用 jdom 和 jquery,并通过以下代码观察到以下奇怪行为:

我尝试使用我能想到的所有方式在 html 页面上的 div 中添加一些样式(背景颜色为绿色)。以上所有尝试(我也一一尝试,看看是否有任何一个独立工作)产生了相同的结果,相当于:<div id="somedivid" style="">

我想知道这是否是一个错误,因为它不会向其中写入任何样式(引号内始终为空),但如果您检查原始文档,则在这些 div 之前没有样式属性时添加样式属性。将我在页面顶部手动创建的类 sel 添加到自定义 css 样式块中确实可以工作,但是,就像您认为的那样。问题是我真的希望能够在使用 jsdom 时动态更改单个对象的样式。如果这是一个错误或者我忽略了什么,任何人都有任何想法?

顺便说一句,这段代码在运行标准 jquery 的普通浏览器中也能正常工作,就像预期的那样,所以它似乎很可能是 jsdom 实现。

0 投票
5 回答
3831 浏览

node.js - jsdom 和 node.js 泄漏内存

我发现了一些关于人们遇到类似问题的参考资料,但答案总是如此,请确保在完成后调用 window.close()。但是,这似乎对我不起作用(节点 0.8.14 和 jsdom 0.3.1)

一个简单的复制

我得到的输出是

在这一点上,风扇变得疯狂,测试实际上停止了……或者至少开始变得非常缓慢

除了 window.close 之外,还有没有人有任何其他提示来摆脱内存泄漏(或者它确实看起来像内存泄漏)

谢谢!

彼得

0 投票
2 回答
297 浏览

jquery - 为 Cloud Foundry 部署添加 .js 脚本文件

我有一些 node.js 代码正在使用jsdom,我需要jquery.min.js后端 css 选择器的文件。事情在本地运行良好,但如果我使用vmc pushon部署api.cloudfoundry.com,它给了我502 Bad Gateway nginx

我假设我必须在 package.json 中声明所有依赖项,就像这里http://blog.nodejitsu.com/package-dependencies-done-right

但是,我不知道如何包含jquery.min.js. 现在它在/lib文件夹而不是/node_modules文件夹中(因为它不是节点模块)。

有人可以帮助我了解如何为 Cloud Foundry 包含正确的依赖项和其他额外的 .js 文件吗?

更新 1:

这是我删除一堆东西后的代码。如果我注释掉jsdom.env,则没有错误。

这是我在使用时看到的vmc logs hp-myapp

它不能被上下文化,因为我localhost:3000跑得很好https://github.com/tmpvar/jsdom/issues/436