Javascript 是否可以将外部JS脚本加载到blob中?
我目前正在玩弄Workers,它们非常整洁,但有一件事肯定遗漏了:向Worker传递匿名函数的可能性。因为我有一些空闲时间,我想看看我是否能想出解决这个问题的办法。我认为实现这一点最明显的方法是使用,因此我设置了以下小脚本:Javascript 是否可以将外部JS脚本加载到blob中?,javascript,jquery,blob,Javascript,Jquery,Blob,我目前正在玩弄Workers,它们非常整洁,但有一件事肯定遗漏了:向Worker传递匿名函数的可能性。因为我有一些空闲时间,我想看看我是否能想出解决这个问题的办法。我认为实现这一点最明显的方法是使用,因此我设置了以下小脚本: var blob = new Blob(['var getLastSeen = function(player) { \ $.getJSON("fetch.php?player=" + player, function(data){
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)所以我的问题是,“尽管我不能与DOM交互,但如何将外部脚本加载到blob?”
编辑:我很清楚,对于一个简单的Ajax请求,我不需要jQuery,我只想知道它是否普遍可行。导入脚本是否解决了您的问题
这就是通常在Worker中导入库的方式。但是,在这种情况下,我认为导入jquery仍然会很不走运,因为jquery需要访问DOM。请参阅。导入密码是否解决了您的问题
这就是通常在Worker中导入库的方式。但是,在这种情况下,我认为导入jquery仍然会很不走运,因为jquery需要访问DOM。请参阅。尽管它不能解决我在jQuery中的问题,但它仍然是我一直在寻找的。谢谢,尽管它不能解决我在jQuery上的问题,但它仍然是我一直在寻找的。谢谢