我有一个editor.html
包含generatePNG
功能:
Diagram //
我想访问DOM并image.src
使用Node.js. 我发现我可以使用cheerio或jsdom.
我从这开始:
var cheerio = require('cheerio'), $ = cheerio.load('editor.html');
但我找不到如何访问和获取image.src
.
问题是,通过将html文件加载到cheerio(或任何其他节点模块)中,将不会像浏览器那样处理HTML.资产(例如样式表,图像和javascripts)将不会像在浏览器中那样加载和/或处理.
虽然node.js和现代webbrowsers都有相同(或类似)的javascript引擎,但是浏览器添加了很多额外的东西,比如window
,DOM
(document
)等.Node.js没有这些概念,所以没有window.FileReader
也不是document.createElement
.
如果图像完全是在没有用户交互的情况下创建的(你的代码示例'神奇地'接收sBlob
到类似于字符串的参数data:
),你可以在服务器上使用所谓的无头浏览器,PhantomJS最近似乎最受欢迎.然后,如果创建时不需要用户交互sBlob
,那么最好使用纯node.js解决方案,例如如何在Node中解析数据URL?.
如果创建sBlob
它需要某种用户交互,并且您需要将它存储在服务器上,您可以使用几乎相同的解决方案,只需sBlob
使用Ajax或websocket将服务器发送到服务器,处理sBlob
成一个图像和(可选)返回URL查找图像的位置.