问题标签 [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 回答
1119 浏览

javascript - 具有相对路径的 jsdom 和 script 标签

我在这里有一些像这样的单页演示:http: //notjs.org/examples/forms/formmode_demo.html

我想,哇,如果可以在我现有的 mocha chai badness 设置中编写一些测试来直接测试示例,那就太棒了:

如果我能做到这一点,那么我将永远不会遭受那种“你的示例 x 几个月前停止工作”的尴尬时刻。

我让它工作,但只能使用来自 http:// urls 的页面中的脚本标签。如果我必须在测试之前将包部署到服务器,那么测试的效果就不那么好了。

示例页面加载 jquery、underscore 和 notjs 并且需要以作为独立演示运行。它还应该能够从本地文件系统运行,并且可以使用相对 url。我最初让页面上的 notjs 脚本标签指向一个相对路径,例如

代替

但是然后 notjs.basics.js 永远不会加载(window.Notjs == undefined 在测试中)并且我没有看到来自 jsdom 的任何错误。我尝试设置 documentRoot jsdom 选项,但这似乎不起作用。

作为参考,loadExample 方法和我的 jsdom 设置的其余部分在这里: https ://github.com/bee-hub/notjs/blob/master/test/testHelper.coffee

感谢您的任何帮助和建议。

0 投票
1 回答
2406 浏览

javascript - 为 iframe.contentDocument iframe 获取对象 null 使用带有必需选项的 jsdom 创建 iframe

我正在使用带有必需参数的 jsdom

我的 contentDocument 为空。我应该怎么做才能在 jsdom 中获取 iframe 的 html 对象?

0 投票
1 回答
585 浏览

node.js - 为什么'base'标签阻止 jsdom.env 工作?

更新:

我发现页面中使用了一个标签“base”,但未能在其中运行 jQuery。如果网站包含该标签,则 jsdom 将无法工作。虽然我不知道为什么。

为了验证这一点,我创建了一个全新的 HTML 文件并放入其中,然后 jsdom 失败了。


我目前正在使用 Node.js,在阅读了如何使用 Node.js 和 jQuery 抓取网页之后,我决定为我创建一个。

于是我安装了express、jsdom等很多东西,发现网页抓取真的很方便。但是后来我发现了一个奇怪的情况,某些特定的页面无法被抓取,而是提示错误如下:

这是我的代码:

在这种情况下,网站“ http://bbs.18183.com/ ”无法正常工作,但许多其他网站都可以正常工作。例如,将其更改为“ http://www.18183.com/ ”,它正在工作。

我猜这是由于“$”的定义的一些冲突,但后来我意识到使用 jsdom.env 页面只是一个 DOM 树。即使我将 $ 更改为其他名称,它仍然不起作用。

有人对这个有了解吗?

0 投票
2 回答
68 浏览

jquery - 优化 DOM 选择时得到意想不到的结果

我有一个非常奇怪的行为,当我尝试获取某些div元素的文本时,在链接多个 jQuery 函数时,我得到了所有以前的“匹配项”。

这是我的代码:

现在,我期望的输出只是匹配表行的第一个子项中包含的 div 中包含的文本。我确实在控制台中得到了这个结果,但在此之前我得到了所有的文本tr,所有匹配tr的(.eq(i)),所有 td 的(:first-child是 a td),所有divs 和 THEN 在输出的最后一位我得到的文本包含在第一个div.

所以groups是持有所有的东西,就像我会做这样的事情:

我对 jQuery 还很陌生,只使用了标准的 JavaScript 选择器 where getElementById("myID").getElementsByTagName("div")[0].innerHTML, 只会给我innerHTML第一个divmyID没有别的。

为什么会发生这种情况,我怎样才能得到我真正想要的东西?

0 投票
1 回答
9959 浏览

node.js - npm 没有在 Windows 中安装 jsdom

我用 jQuery 在 node.js 中构建了一个应用程序,但是当我尝试执行时,它说它找不到模块jsdom,所以即使我不明白为什么安装 jQuery 没有安装这个依赖项,我手动运行npm install jsdom并收到以下错误消息:

MSBUILD:错误 MSB3428:无法加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装 .NET Framework 2.0 SDK,2) 安装 Microsoft Visual Studio 2005 或 3) 如果组件安装在其他位置,则将其位置添加到系统路径。[C:\Sites\myapp\node_modules\jsdom\node_modules\contextify\build\binding.sln]

我尝试了第一个选项,但仍然没有帮助。我在做什么(错过|做错了)?

0 投票
0 回答
805 浏览

node.js - 使用 require.js 和 jsdom 进行服务器端渲染

我有一小段代码,并且 require 确实最终将脚本标签添加到头部(它添加了<script type="text/javascript" charset="utf-8" data-requirecontext="_" data-requiremodule="/scripts/config.js" src="/scripts/config.js"></script> <script type="text/javascript" charset="utf-8" data-requirecontext="_" data-requiremodule="/scripts/main.js" src="/scripts/main.js"></script>

但问题是它似乎没有在这些脚本中运行任何代码(其中包括更多的 require 语句)。当页面加载时,一切运行正常,但我正在尝试进行服务器端渲染。

我应该使用绝对路径吗?我尝试http://127.0.0.1:6789/scripts/main.js对其他所有内容都使用和相同,但它似乎不起作用。有什么问题?

0 投票
1 回答
908 浏览

javascript - 在 jsdom 下执行时如何捕获脚本错误?

我正在使用 jsdom(在单元测试中)来执行一些脚本,就好像它们在浏览器中一样,这很好用,除了如果其中一个脚本出错,脚本会静默失败。

文档表明,如果存在任何错误,回调将返回一个错误数组,但即使我有错误,我也会返回 null。

这是一个错误还是我做错了什么?

0 投票
1 回答
245 浏览

web - 使用 npm 下载 jsdom 时出错

我的操作系统是windows 8.1 preview, Python 2.7, vc++2010, 加了C++的环境变量,还是不行,谢谢

0 投票
1 回答
1799 浏览

node.js - window.addEventListener 不适用于空窗口

JSDOM 版本:0.6.5 Nitrous.io Cloud IDE 环境

观察到的问题:创建一个空窗口,然后附加事件处理程序失败并出现异常跟踪:

这是有问题的代码片段:

谁能告诉我我在这里错过了什么?

0 投票
3 回答
35631 浏览

node.js - 抓取网页并通过单击按钮进行导航

我想在服务器端执行以下操作:

1)抓取网页
2)模拟点击该页面,然后导航到新页面。
3)刮新页面
4)模拟一些按钮点击新页面
5)通过json或其他方式将数据发送回客户端

我正在考虑将它与 Node.js 一起使用。

但是我对我应该使用哪个模块感到困惑
a) Zombie
b) Node.io
c) Phantomjs
d) JSDOM
e) 其他任何东西

我已经安装了 node,io 但无法通过命令提示符运行它。

PS:我在windows 2008服务器上工作