问题标签 [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 投票
0 回答
325 浏览

jquery - jsdom 和外部 jQuery

我有一个 .js 文件,其中包含一堆在客户端使用的 jQuery 函数。我也想在服务器端使用它们,但我很难找出最好的方法。我已经对我的代码进行了多次迭代来尝试实现这一点。我听到的最后一个解决方案是将 javascript 注入另一个脚本以供使用。不知道该怎么做。我将在下面发布我的代码。

每次我尝试从另一个脚本调用 templateparser.process_table() 函数时,它都会崩溃。

在不更改客户端.js 的情况下,我应该这样做吗?

0 投票
3 回答
5025 浏览

javascript - 使用 NodeJS 生成服务器端 HighStock 图表

我正在使用HighStock在浏览器中生成一些图表。但现在我想将其中一些存储在服务器上。所以我知道可以将 HighCharts 导出到服务器,但如果可能的话,我宁愿使用其他方式。问题是在服务器上运行 HighStock 并将 svg 转换为某种图像格式,然后将其存储在那里。

快速谷歌搜索给了我这个页面。结合 HighCharts 和 NodeJS 似乎是正确的方法,但这种解决方案不适用于新版本的 HighCharts。更准确地说,在 NodeJS 中使用jsdom模块(v0.2.10 - 最新版本)和 HighStock v1.0.2(查看以下代码):

抛出异常:

不知何故,这两个库似乎不能一起工作。所以这可能适用于旧版本的 HighStock,但实际上我需要 HighStock v1.0.2。

这个问题有什么解决办法吗?一些更好的图书馆jsdom?还是一些奇怪但有效的技巧?任何想法表示赞赏。:)

// 编辑

感谢 ReCoder,我设法让它工作。主要是forExport在选项中添加标志(防止异常)。不幸的是,这生成了图表,但没有更新持有者。exporting添加模块(HighStock 包的一部分)后,我设法让它工作。完整的工作代码如下所示:

图表不如应有的好(例如标签放置不当),但可能是调整选项的问题。至少它有效!

0 投票
1 回答
2785 浏览

jquery - Zombiejs jQuery nullTypeError 'compareDocumentPosition'

僵尸:无法读取 null 的属性“compareDocumentPosition”类型错误:无法读取 null 的属性“compareDocumentPosition”

每当我尝试使用 Zombiejs 加载包含 jQuery 的页面时,都会发生这种情况。这在 Debian 和 Windows 上发生在我身上,有各种不同的页面,使用不同版本的 jQuery,页面上没有其他内容。

这似乎与 jsDom 在页面文档准备好之前评估 jQuery 的方式有关,但它远远超出了我的想象。

任何人都遇到过这种情况,知道解决方法或有任何指示吗?谢谢!

更新:这是我的测试(实际上通过了,但使用调试运行会显示我提到的错误):

这是错误:

这会导致其他错误,因为在我的其余脚本中未定义“$”。

这是我正在测试的页面的 HTML:

0 投票
2 回答
4634 浏览

jquery - javascript加载值后Nodejs抓取网站

可能是关于 nodejs/jsdom 的新手问题

我正在尝试使用 node.js 抓取网站。我正在使用 jsdom 和 jquery 来获取 html 并解析所需的内容。但是,不知何故,我得到的值不是网站上显示的值。基本上这些值是由 javascript 动态更改的,我想要这些值。我使用 nodejs/jsdom 进行抓取的全部原因是 js 将被执行,并且我在该事件之后获得了值。

有没有办法告诉 jsdom 等到 javascript 执行?还是我错了?我在这件事上搜索了很多。

0 投票
2 回答
3497 浏览

jquery - 无法使用 node.js 安装 jquery - 无法加载 Contextify

更新 - 见帖子底部

我正在尝试在 node.js 中设置 jquery 并且遇到了一些麻烦。如SO 所述,我正在安装 jquerynpm install jquery并从命令行将我的 javascript 作为脚本执行,而不是将其作为服务器运行。

需要注意的几点:

  • OS X 10.7.3
  • node.js 版本 0.6.11
  • npm 版本 1.1.1
  • 节点 waf 版本 1.5.16

因此,从包含我的节点脚本的目录中,我npm install jquery. 然后终端会关闭 5 秒钟并执行一些操作,特别是下载模块并构建 contextify。最后,消息是'build' finished successfully

另外,从安装日志中我看到:

  • htmlparser 1.7.4
  • jsdom 0.2.10

我此时尝试运行我的脚本:./script.js,但这是输出:

因此,我执行以下操作:

Internal Contextify ERROR但是,当我运行我的脚本时,我仍然得到。以下是完整的错误消息:

not found编译时的输出对我来说确实很奇怪Checking for node path,但我不知道该怎么做,除了这对我来说是出乎意料的。

如果有人可以提供任何建议,我将不胜感激!

更新 - 2/21/12

经过更多研究,我已经能够解决找不到节点路径的奇怪问题。执行后:export NODE_PATH="/usr/local/lib/node"在终端中,在构建过程中找到节点路径。但是,在删除 jquery 模块并再次安装/构建后,我仍然处于同样的情况。

contextify.node 文件存在于指定的发布目录中,但我的脚本仍然无法加载它。

0 投票
2 回答
3599 浏览

node.js - 如何从简单的 jsdom 函数返回值?

我正在使用带有 jquery 的 jsdom,它工作得很好。然而,我试图将我的代码模块化一点,所以我不会重复自己,所以我用一些 jsdom 代码制作了一个基本函数,它接受一些 html (DOM),用 jquery 调整它,然后把它吐出来. 但是,我无法返回结果并因此将其分配给调用 var。我可能不会在正确的地方返回,但如果是这样,我只是没有看到明显的情况。可以使用一点帮助。

这是代码:

编辑:

这确实是一个异步问题,所以这里应该如何使用回调而不是返回来完成:

0 投票
0 回答
519 浏览

javascript - Zombie异步加载多个JS文件

尝试 Zombie 几个小时并感到非常兴奋。唯一的(初学者的运气?)问题是脚本似乎是异步加载的(这很酷)并按照它们下载的顺序执行(而不是按照它们在“原始”HTML文件中提到的顺序)。我会解释:

http://jsfiddle.net/viebel/GWYEj/ - 以下脚本加载 jQuery 并尝试使用它。下载 jQuery 需要一些时间,但 Zombie 似乎在下载完成之前继续执行下一个脚本部分。显然,没有 jQuery 的 $('body') 没有多大意义,因此我们得到以下错误:

在“常规”浏览器中,代码运行流畅。是的,我们知道 node.js 并不是真正的客户端 javascript,但 Zombie.js 应该是,不是吗?

请协助我们做错了什么。

0 投票
1 回答
2635 浏览

javascript - 我想从 Cakefile 运行 d3

我想从命令行执行一些 d3 代码。最初我只是尝试了类似的东西:

但这没有用。我收到这样的错误:

所以......我认为这个异常告诉我我需要在浏览器中执行 d3 。我尝试了几种不同的方式。不过,基本上,我想如果我只是启动 phantomjs,我可能能够做我想做的事。这是我的蛋糕文件:

不过,当我走这条路时,我总是会遇到这样的异常:

我做错了什么??


感谢 mbostock 我得到了以下工作:

我的 package.json:

我的蛋糕文件:

0 投票
2 回答
1929 浏览

perl - 有没有人成功地将 jqPlot 图表渲染为服务器端的图像(例如使用 node.js)?

不幸的是,我的组织被 IE6 困住了一段时间(是的,我知道......)。

我喜欢 jqPlot,但发现 IE6 对它的感觉不一样。因此,厌倦了尝试解决 IE6 的许多故障和内存泄漏问题,我想通过在服务器上生成图表的图像(可能是 PNG)来规避这个问题。就我的目的而言,客户端图表的交互性不如在服务器上生成图表图像缓存并减少对 IE6 的压力它还可以巧妙地解决 jqPlot 输出无法正确打印的问题来自 IE6(我猜这可能是一个画布问题)。

但问题是,我发现的任何服务器端解决方案都无法与 jqPlot 的视觉/美学吸引力相匹配。在服务器端,我对 Perl 最满意,CPAN 上可用的东西从功能性但丑陋的(例如 Chart::Gnuplot)到美丽但无法获得的(例如 Chart::Clicker,它有无数的先决条件并且没有即使经过一周的尝试,也不想在 Windows/ActiveState Perl 上为我安装)。

谷歌告诉我,有些人可能尝试过使用 node.js 从服务器上的 jqPlot 生成 PNG,但我找不到任何证据表明有人成功了。我以前没有使用过 node.js,所以想稍微保证一下,在我尝试 node.js/jsdom 学习曲线之前我没有尝试不可能的事情......

您可以提供的任何建议将不胜感激(除了“升级浏览器” - 这最终会发生,但不会在可预见的情况下发生)。

0 投票
1 回答
1601 浏览

javascript - nodejs响应中的汉字写

我无法使用 nodejs 显示对浏览器的中文响应?

结果不正确:�ٶ�һ�£������֪��

正确的结果应该是:百度一下,你就知道