[英]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.