If you do it exactly like in the official example, it works:
var btn = document.createElement('button');
document.body.appendChild(btn);
btn.textContent = 'Download .glb';
btn.onclick = download;
function download() {
const exporter = new GLTFExporter();
exporter.parse(
scene,
function (result) {
saveArrayBuffer(result, 'scene.glb');
},
{ binary: true }
);
}
function saveArrayBuffer(buffer, filename) {
save(new Blob([buffer], { type: 'application/octet-stream' }), filename);
}
const link = document.createElement('a');
link.style.display = 'none';
document.body.appendChild(link); // Firefox workaround, see #6594
function save(blob, filename) {
link.href = URL.createObjectURL(blob);
link.download = filename;
link.click();
// URL.revokeObjectURL( url ); breaks Firefox...
}