सारांश
blob: Chrome के लिए 8+, फ़ायरफ़ॉक्स 6+, सफारी 6.0+, ओपेरा 15+
data:application/javascript ओपेरा के लिए 10.60 - 12
eval अन्यथा (IE 10+)
URL.createObjectURL(<Blob blob>)एक स्ट्रिंग से वेब कार्यकर्ता बनाने के लिए इस्तेमाल किया जा सकता है। बूँद को BlobBuilderएपीआई पदावनत या Blobनिर्माणकर्ता का उपयोग करके बनाया जा सकता है ।
डेमो: http://jsfiddle.net/uqcFM/49/
window.URL = window.URL || window.webkitURL;
var response = "self.onmessage=function(e){postMessage('Worker: '+e.data);}";
var blob;
try {
blob = new Blob([response], {type: 'application/javascript'});
} catch (e) {
window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;
blob = new BlobBuilder();
blob.append(response);
blob = blob.getBlob();
}
var worker = new Worker(URL.createObjectURL(blob));
worker.onmessage = function(e) {
alert('Response: ' + e.data);
};
worker.postMessage('Test');
अनुकूलता
वेब कर्मचारियों को निम्नलिखित ब्राउज़र स्रोत में समर्थित किया जाता है :
- क्रोम 3
- फ़ायरफ़ॉक्स 3.5
- IE 10
- ओपेरा 10.60
- सफ़ारी ४
इस विधि का समर्थन Blobएपीआई और विधि के समर्थन पर आधारित है URL.createObjectUrl। Blobअनुकूलता :
- Chrome 8+ (
WebKitBlobBuilder), 20+ ( Blobनिर्माता)
- फ़ायरफ़ॉक्स 6+ (
MozBlobBuilder), 13+ ( Blobकंस्ट्रक्टर)
- सफारी 6+ (
Blobनिर्माता)
IE10 का समर्थन करता है MSBlobBuilderऔर URL.createObjectURL। हालाँकि, blob:-URL से वेब वर्कर बनाने का प्रयास एक SecurityError फेंकता है।
ओपेरा 12 URLएपीआई का समर्थन नहीं करता है। कुछ उपयोगकर्ताओं के पास इस हैक केURL लिए धन्यवाद, ऑब्जेक्ट का एक नकली संस्करण हो सकता है ।browser.js
फालबैक 1: डेटा-यूआरआई
ओपेरा Workerकंस्ट्रक्टर के तर्क के रूप में डेटा-यूआरआई का समर्थन करता है । नोट: विशेष वर्ण (जैसे कि #और %) से बचने के लिए मत भूलना ।
var worker = new Worker('data:application/javascript,' +
encodeURIComponent(response) );
डेमो: http://jsfiddle.net/uqcFM/37/
फॉलबैक 2: एवल
eval सफारी (<6) और IE 10 के लिए एक वापसी के रूप में इस्तेमाल किया जा सकता है।
self.onmessage = function(e) {
self.onmessage = null;
eval(e.data);
};
var worker = new Worker('Worker-helper.js');
worker.postMessage(response);