A Blob (Binary Large Object) is a data structure used to store raw data. It can be created using the Blob constructor. For instance:
const myBlob = new Blob(['Hello, world!'], { type: 'text/plain' });
You can use Blobs to create URLs, which can be directly embedded into HTML documents. For example, you can create a Blob containing text data and then generate a download link for it. When the user clicks this link, they can download the Blob content as a file. This is shown below:
<html>
<head/>
<body>
<h1>Download Blob Example</h1>
<script>
const createDownloadLink = (content, filename) => {
// Create a Blob from the content
const blob = new Blob([content], { type: 'text/plain' });
// Create a URL for the Blob
const url = URL.createObjectURL(blob);
// Create an <a> element
const a = document.createElement('a');
a.href = url;
a.download = filename;
a.textContent = `Download ${filename}`;
// append to body
document.body.appendChild(a);
// revoke URL after some time or on user action
// URL.revokeObjectURL(url);
}
createDownloadLink('some content', 'example.txt');
</script>
</body>
</html>
You can also use a Blob to dynamically generate code and create JavaScript files on-the-fly! Here’s an example of how to create a Web Worker from a Blob:
<html>
<head/>
<body>
<h1>Web Worker Blob Example</h1>
<p id="result"></p>
<script>
const workerScript = `
onmessage = e => {
postMessage(e.data * 2);
};
`;
const blob = new Blob([workerScript], { type: 'application/javascript' });
const url = URL.createObjectURL(blob);
const worker = new Worker(url);
worker.onmessage = e => {
document.getElementById('result').textContent = 'Worker result: ' + e.data;
URL.revokeObjectURL(url); // Clean up Blob URL
};
worker.postMessage('2');
</script>
</body>
</html>
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.