繁体   English   中英

如何使用jQuery从Web Worker Thread中解析XML

[英]How to use jQuery to Parse XML from within a Web Worker Thread

略读? 只需阅读大胆的内容。

你好朋友! 我正在构建一个需要进行一些严肃的XML处理的Web应用程序

我目前有一个使用jQuery来解析和操作海量XML文档的函数 会将浏览器的UI锁定长达60秒 ,这显然是相当蹩脚的。

我一直在研究Web Workers ,因为我想在Web Worker线程中运行此操作来减轻浏览器的UI。

希望我可以使用Web Worker的self.importScripts()来导入jQuery库,从Web Worker线程中解析和操作XML。
做不到: Web Worker抛出错误,就像window is not defined一样,因为jQuery库引用了窗口和朋友,这些不是线程安全的,因此不存在于Web Worker的全局命名空间中。

我做了很多谷歌搜索,但很难找到有关这个主题的最新信息。 我发现了一些hacky work-arounds和jQuery插件,但它们都已经好几年了,而且我一直希望我错过了这种相对较新技术的新解决方案。
是否存在(半)官方“Web Worker jQuery”

我发现XMLforScript是jQuery的替代品,它应该在Web Worker中运行 - 但我特别想找到一个jQuery解决方案,因为我不想重写我的代码。

在调用importScripts()之前,我很想尝试创建一系列假元素来缓解Web Worker中的jQuery错误,如下所示:

window={
    document:{
        createElement:function(){
            return {
                setAttribute:function(){} } } } };
    /* ... much more fake DOM */
    importScripts('jquery.js');

但是,我意识到我必须深入创建一个巨大的人工DOM来满足jQuery,并认为这可能是一条失败和浪费时间的道路,因为jQuery可能依赖于其中的一些对象进行XML解析(I不太了解jQuery如何工作知道)。

有没有人有任何可爱的解决方案?

如果没有,我只会制作一个脂肪静态加载指示器来警告用户恶作剧需要时间,并且他们必须信任并希望网络应用程序没有崩溃或停止工作:D

谢谢你的思考。
//追。

您应该能够使用此方法中的想法, 该方法使用Blob为Web工作者提供对原始dom的访问权限。

更新

工作人员确实可以访问 DOM ,因为 这个玩具示例应该证明

上述陈述是一种公然的谎言(感谢OP)。 见更新II

更新II

正如OP在下面的评论中正确指出的那样,给出的例子是作弊。 如果你能够从JQuery中解脱出来,我有一个例子,使用功能强大的<script>库的xml对xml文档进行一些SAX处理。 我已将示例发布到github 执行时,结果将写入console ,因此打开一个。

我在这里上传了代码用于演示目的。

此外,在此SO问题中提供了对Web工作者的深入讨论以及DOM的不可访问性

只是为了添加一个可能的替代,您可能想要查看Hive ,或者特别是子项目Pollen.js,它为工作者提供了jQuery的许多功能(尽管显然没有任何直接操作DOM的东西)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM