सारांश
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);