问题标签 [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.
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
感谢您的任何帮助和建议。
javascript - 为 iframe.contentDocument iframe 获取对象 null 使用带有必需选项的 jsdom 创建 iframe
我正在使用带有必需参数的 jsdom
我的 contentDocument 为空。我应该怎么做才能在 jsdom 中获取 iframe 的 html 对象?
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 树。即使我将 $ 更改为其他名称,它仍然不起作用。
有人对这个有了解吗?
jquery - 优化 DOM 选择时得到意想不到的结果
我有一个非常奇怪的行为,当我尝试获取某些div
元素的文本时,在链接多个 jQuery 函数时,我得到了所有以前的“匹配项”。
这是我的代码:
现在,我期望的输出只是匹配表行的第一个子项中包含的 div 中包含的文本。我确实在控制台中得到了这个结果,但在此之前我得到了所有的文本tr
,所有匹配tr
的(.eq(i)
),所有 td 的(:first-child
是 a td
),所有div
s 和 THEN 在输出的最后一位我得到的文本包含在第一个div
.
所以groups
是持有所有的东西,就像我会做这样的事情:
我对 jQuery 还很陌生,只使用了标准的 JavaScript 选择器 where getElementById("myID").getElementsByTagName("div")[0].innerHTML
, 只会给我innerHTML
第一个div
,myID
没有别的。
为什么会发生这种情况,我怎样才能得到我真正想要的东西?
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]
我尝试了第一个选项,但仍然没有帮助。我在做什么(错过|做错了)?
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
对其他所有内容都使用和相同,但它似乎不起作用。有什么问题?
javascript - 在 jsdom 下执行时如何捕获脚本错误?
我正在使用 jsdom(在单元测试中)来执行一些脚本,就好像它们在浏览器中一样,这很好用,除了如果其中一个脚本出错,脚本会静默失败。
文档表明,如果存在任何错误,回调将返回一个错误数组,但即使我有错误,我也会返回 null。
这是一个错误还是我做错了什么?
web - 使用 npm 下载 jsdom 时出错
我的操作系统是windows 8.1 preview, Python 2.7, vc++2010, 加了C++的环境变量,还是不行,谢谢
node.js - window.addEventListener 不适用于空窗口
JSDOM 版本:0.6.5 Nitrous.io Cloud IDE 环境
观察到的问题:创建一个空窗口,然后附加事件处理程序失败并出现异常跟踪:
这是有问题的代码片段:
谁能告诉我我在这里错过了什么?
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服务器上工作