是否可以将外部JS脚本加载到blob中?

时间:2013-01-19 13:57:00

标签: javascript jquery blob

我目前正在和工人一起玩弄它们非常整洁,但有一点肯定是缺失的:可以通过工作人员传递匿名功能。因为我手上有空闲时间,所以我想知道是否可以找到解决这个问题的方法。我认为最明显的实现方法是使用Blobs,因此我设置了这个小脚本:

var blob = new Blob(['var getLastSeen = function(player) { \
                    $.getJSON("fetch.php?player=" + player, function(data){ \
                        if(data.online) \
                            postMessage("online"); \
                        else if(data.online == false) \
                            postMessage(data.lastSeen); \
                    }); \
                    };\
                    getLastSeen("AI@speedersclan.org");'],{ "type" : "text\/javascript" });

var worker = new Worker(window.URL.createObjectURL(blob));

worker.onmessage = function (Event) {
    document.getElementById("logDisplay").innerText = Event.data;
};

(getLastSeen执行数据库查找以查看播放器最后一次登录的时间)

正如您可能已经注意到我需要jQuery来运行此脚本,因此我想我只是在Blob的开头添加这一小块代码:

var head= document.getElementsByTagName("head")[0]; \ 
var script = document.createElement("script"); \
script.type= "text/javascript"; \
script.src= "//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"; \
head.appendChild(script); \

我没有注意到,虽然在查看Blob的类型之后我立即应该有,但是没有办法与DOM交互,这意味着加载外部脚本显然是不可能的(至少与我正在使用的方法。)

(tl; dr)所以我的问题是,“如何将外部脚本加载到blob中,尽管我无法与DOM交互”?

编辑:我很清楚我不需要jQuery来处理简单的Ajax请求,我只是想知道它是否通常是可能的。

1 个答案:

答案 0 :(得分:1)

importScripts能解决您的问题吗? https://developer.mozilla.org/en-US/docs/DOM/Using_web_workers#Importing_scripts_and_libraries

这就是你通常在Worker中导入库的方式。但是,在这种情况下,我认为你仍然不能导入jquery,因为jquery需要访问DOM。请参阅HTML Web Worker and Jquery Ajax call