首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >web工作者内部的DOM操作

web工作者内部的DOM操作
EN

Stack Overflow用户
提问于 2015-11-10 23:28:24
回答 3查看 6.5K关注 0票数 8

我知道工作人员不能直接操作文档,但是DOM方法如何?他们去哪了!

例如,如果我提出一个接收HTML片段的请求,如果需要解析它,我应该做什么来从特定的节点检索一些数据?!

绝对不可能在网络工作者上使用虚拟DOM?!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-11 13:20:02

浏览器中的支持

DOMParserdocument.implementation通常用于在浏览器中将HTML解析为DOM。在员工上下文中两者都不可用。

在Firefox中,这是不可能的,因为有人决定所有线程只有一个DOM解析器实例。参见这个bug:bug.cgi?id=677123

在google chrome中,它也不起作用。

解决办法-外部库

这是正确的,因为浏览器开发人员没有意识到DOM和XML解析将是WebWorkers的主要用途之一,所以我们必须回到外部库。最好的选择似乎是JSDOM,但您需要找出如何对其进行褐化

下面是我对DOMParser的失败尝试,我把它保存在关于这个主题的未来实验中:https://jsfiddle.net/svaqb2wn/2/

票数 6
EN

Stack Overflow用户

发布于 2018-08-29 23:58:35

您可以使用在Web工作者中运行的DOM实现之一:

票数 3
EN

Stack Overflow用户

发布于 2015-11-11 01:58:16

起初,您可能认为解析XML的正确方法是XMLHttpRequest,在10种情况中有9种是正确的。但是,在当前的worker规范中,我们无法访问XMLHttpRequest。另一种方法是使用少数几个流行的XML解析库之一:

https://github.com/isaacs/sax-js

http://xmljs.sourceforge.net/index.htmlhttps://www.npmjs.com/package/xmljs

HTML只是XML,所以您可以以这种方式解析数据。使用上面npmjs中的xmljs的示例:

代码语言:javascript
复制
var XmlParser = require("xmljs");
var fs = require("fs");


var p = new XmlParser({ strict: true });
var xml = fs.readFileSync("./SOAP1.xml"); // XML in the examples direct 
var xmlNode = p.parseString(xml, function(err, xmlNode) {
    if(err) {
        console.error(err);
        return;
    }
    var nodes = xmlNode.path(["Envelope", "Body", "GetstockpriceResponse", "Price"], true);
    console.log(nodes.map(function(n) { return n.text; }));
});
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33641622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档