我目前正在與工作人員一起玩耍,他們非常整潔,但有一件事當然缺失:可能會傳遞一個匿名函數。因爲我手上有空閒時間,我想看看能否找出解決這個問題的辦法。我認爲,最明顯的方法實現,這將是使用Blobs,所以我成立了這個小腳本:是否可以將外部JS腳本加載到blob中?
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("[email protected]");'],{ "type" : "text\/javascript" });
var worker = new Worker(window.URL.createObjectURL(blob));
worker.onmessage = function (Event) {
document.getElementById("logDisplay").innerText = Event.data;
};
(getLastSeen做一個數據庫查詢時看到是最後一次玩家登錄)
正如你可能已經注意到,我需要jQuery來運行該腳本,所以我想我只是在斑點的開頭添加的代碼,這個小塊:
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進行交互,這意味着加載外部腳本顯然是不可能的(至少使用我正在使用的方法)。因此,我的問題是,「如何將外部腳本加載到blob中,但我無法與DOM交互」?
編輯:我很清楚,我不需要jQuery的簡單的Ajax請求,我只是想知道它是否一般可能。
雖然它不能解決我使用jQuery的問題,但它仍然是我一直在尋找的東西。謝謝 –