问题标签 [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.
jquery - node.js:jsdom 的问题 - jQuery 对象返回未定义
我有兴趣为其中一个项目进行一些服务器端 DOM 操作,因此我决定看一下node.js,尤其是jsdom。我对node.js完全陌生,所以我的错误可能很明显,但无论如何我都无法在任何地方找到我的问题的解决方案......
首先,我在本地运行 Windows 上的节点,并且还使用在线 IDE cloud9
值得一提的是,我在为 node 安装最新的 jsdom 包(即 0.2.15)时遇到了麻烦,因为所需的依赖contextify无法在 Windows 下编译(需要 C++ 和 Python,而且我发现 npm 不支持构建 C++ 包) . 所以我采取了两种替代方法:
我安装了一个不依赖于 contextify 的旧版本,即jsdom@0.2.1。这是我目前拥有的 npm 列表
当我尝试运行从jsdom github repo cloud9 获取的简单测试脚本时,返回了这个警告
我试图解决这个问题,将所有提到的 sys 替换为 util,错误消失了......(仍然不太确定这是正确的做法......)。所以,最后当我尝试运行这个片段时
我发现了
window.$ === undefined
。尝试在 cloud9 上使用节点 v0.6.x 和节点 v0.4.x 以及在本地使用节点 v0.8.7 运行。我尝试做的另一件事是安装最新的 jsdom@0.2.15,从这里获取已编译的 contextify ,安装绑定并将其添加到 contextify/node_modules,因为 contextify 依赖于它。我根本无法使它工作=(没有浪费太多时间,因为这似乎是一种错误的方法,并且 contextify 不是最新的。
这是 npm 列表
/li>
另外,这是我的cloud9 工作区,不要害羞。
任何帮助表示赞赏。也许还有其他更好的方法来完成我想要的。
谢谢。
javascript - Cloudfoundry 上的 JSDOM 抓取不起作用
我正在为一个应用程序使用 jsdom node.js 模块,该应用程序执行一些网络抓取以获取它需要的一些数据。当我在本地运行时,这非常有效。
但是,当我将应用程序推送到 cloudfoundry 时,它会崩溃。日志如下:
====> /logs/stderr.log <====
/var/vcap/data/dea/apps/caretogethersandbox-0-8b20af9255bbf552d0f490cb60d0df55/app/node_modules/jsdom/lib/jsdom.js:171 个特征 = JSON.parse(JSON.stringify(window.document.implementation._fea ^TypeError:无法读取未定义的属性“实现”
我在这里缺少什么吗?我很困惑。我知道我编写的代码工作正常,这似乎是模块和 cloudfoundry 之间的问题。
node.js - 我在哪里可以找到 jsdom 文档?
我正在寻找关于 jsdom 的文档,它比https://github.com/tmpvar/jsdom上的自述文件更具描述性。
具体来说,我正在寻找有关如何解释由 jsdom 创建的 DOM 节点的 nodeType 属性的说明。据我所知,该属性存储一个没有内在含义的整数。在直接的例子中,我确信我可以做一些测试来发现什么整数映射到什么 DOM 节点类型,但是编写自定义测试和自省代码需要很长时间才能解决这些对象。我使用该文档的其他问题是关于如何直接访问节点的父节点、遍历子节点、访问文本数据等(所有这些都是通过直接在任何 jquery 特定函数之外访问对象属性)。
我在哪里可以找到关于 DOM 节点属性的 jsdom 文档?
javascript - 在节点项目中需要 d3 会导致 jsdom 错误
我真的很困惑这里发生了什么。在 d3 2.10.1 中,require 'd3'
调用会在 d3 的这一行中生成关于 jsdom 的错误index.js
:
jsdom 位于 npm install 的 d3 的 node_modules 文件夹中。但是,即使我将 jsdom 直接安装为 package.json/slug.json 中的依赖项,我也会收到相同的错误。当需要 d3 时,问题如下:
旧版本的 d3 (2.8.1) 也会发生这种情况。我在 Spine/hem/npm 应用程序中使用 d3,但不知道是什么原因造成的。现在,我只需要 d3.v2.min.js 脚本,但这只是一个临时的 hack。
希望各位节点勇士能帮帮我!
jquery - node.js - 如何使用 jsdom / node-jquery 更新我的页面外观?
似乎我能找到的所有文档jsdom
都是关于“抓取其他人的页面”以获取信息。我想使用jsdom
或node-jquery
更新用户所在的页面。我知道当我编写代码时,我可以有一个<script>
链接到公共目录中的 JavaScript 文件的常规标记,但如果可能的话,我想学习如何从服务器上执行此操作。我真正想要的是允许多个用户连接到一个页面并在一个用户执行操作时为所有用户更新页面。例如,按钮 1 将背景变为黑色。按钮 2 将其变为红色,按钮 3 将其变为白色。如果我错了,请纠正我,但我认为通过<script>
标签链接到 JavaScript 文件是不可能的。所以看着jsdom
:
好的,这是第 1 个问题。我不知道在这段代码中为 html 放什么来获取我的 DOM 对象,或者我能做什么。我的文件是用玉写的,所以我不能只从文件中加载它们。然后我开始想,也许我可以把这段代码放在我代码的路由部分,并从req
变量中获取 html。所以我开始在我的路由代码中玩耍:
我只想说,整个路由的事情已经让我大吃一惊了。我已经尝试res.render
了第二次,但这不起作用。所以这导致了问题 2。即使我可以获取 DOM 对象并对其进行操作,我也不知道如何将它们推回客户端,因为再做一秒钟res.render
是行不通的。更不用说这会破坏目的,因为如果我让它们重新渲染,我不妨将它们重定向到另一个页面。
我打算用它socket.io
来处理用户连接,所以也许关键就在那里。也许我可以设置 asocket.on('button_click', function(){ ... });
但我不知道在该函数中放置什么来处理 DOM 操作和更新 DOM,或者在客户端如何让按钮发出'button_click'
,因为客户端无法访问套接字。 io 变量。
因此,如果有人可以帮助我使用示例向我解释这些事情,那就太好了。我真的很想弄清楚这一切,我花了几天时间研究和阅读 node.js、express.js、socket.io、jsdom 和 node-jquery 的 API 文档。似乎我发现的所有示例对于他们自己的领域来说都是非常基础的,并且没有任何示例可以真正将它们联系在一起。
javascript - 用于 Web Worker 中 HTML 字符串内容的 DOM 类 API
是否有任何库可以帮助在网络工作者中进行 html 字符串操作?
我想做的是,在一个工人内部,有一个嘶嘶声类型的选择器工具,它可以让我做这样的事情:
,没有 DOM 交互。
php - 使用 NodeJS 和 JSDOM/jQuery 从代码片段构建 PHP 页面
我正在从现成的代码片段创建一个 PHP 页面并使用 JSDOM/jQuery 修改页面。例如,我有这个代码:
但它会插入转义的 php 标签。如何让它按原样放置这个字符串而不转义?
我尝试了另一个名为Cheerio的库,现在看起来像这样的代码可以正常工作:
没有字符被转义,我可以正确地将其保存到文件中。
更新:我这样做的原因是我必须处理 WordPress 主题的创建,并且我想简化这个过程。由于我既不是 WordPress 主题结构也不是 PHP 的忠实粉丝,我想在 Jade 中构建文件集,通过 Express 运行它们,然后使用自动化过程将它们编译为 Wordpress 主题。我在这方面取得了一些成功。现在我使用 Jade mixins 来实现:
变成这样的东西:
以最简单的形式。
因此,通过这种方式,我可以使我的模板易于修改,使用起来既美观又愉快。
node.js - node.js 和 jsdom - 无法检测到返回了 http 500 错误?
我将 jsdom 与 node.js 一起使用,我试图让它为我提供一些指示,表明发生了 http 错误。我已经设置了一个测试服务器,它只为所有请求返回一个 http 500 标头,但是当我尝试使用 jsdom 加载它时,jsdom 不会抛出任何错误,并且似乎没有向我提供任何可以识别的信息返回了 http 500 错误。检测 http 500 错误的最佳方法是什么?