Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Safari上的JavaScript似乎在使用资源,即使还没有准备好_Javascript_Safari - Fatal编程技术网

Safari上的JavaScript似乎在使用资源,即使还没有准备好

Safari上的JavaScript似乎在使用资源,即使还没有准备好,javascript,safari,Javascript,Safari,在我的JavaScript应用程序中,我使用JS框架来显示3D场景。 所有这些在Chrome和Chrome浏览器上都运行得很好,但在Safari中,我遇到了一个问题,我不知道如何以最佳方式解决这个问题。 我认为这个问题取决于加载一个非常大的.js文件所需的时间。 在我的应用程序中,所有资源(图像、纹理、3D对象模型)都是以base64格式硬编码到一个.js文件中的:所以这个文件相当大(8MB),需要几秒钟才能加载。但Safari似乎没有等待所有资源加载,结果是一些3D模型没有显示出来 以下是my

在我的JavaScript应用程序中,我使用JS框架来显示3D场景。 所有这些在Chrome和Chrome浏览器上都运行得很好,但在Safari中,我遇到了一个问题,我不知道如何以最佳方式解决这个问题。 我认为这个问题取决于加载一个非常大的.js文件所需的时间。 在我的应用程序中,所有资源(图像、纹理、3D对象模型)都是以base64格式硬编码到一个.js文件中的:所以这个文件相当大(8MB),需要几秒钟才能加载。但Safari似乎没有等待所有资源加载,结果是一些3D模型没有显示出来

以下是my index.html的结构:


马加兹诺3D
重载的.js是/gui/texture.js。此文件仅包含一个对象,其中所有资产均为base64格式。诸如此类:

Texture.texture = new BABYLON.Texture(_TEXTURES.texture1, null, false, false);
“严格使用”;
常量_纹理={
纹理1:“数据:图像/jpeg;base64,/9j/4AAQS…”,
texture2:“数据:image/jpeg;base64,/9j/4AAQS…”,
//....
//许多其他基础64
//....
}
materiali.js使用以下base64资产:

Texture.texture = new BABYLON.Texture(_TEXTURES.texture1, null, false, false);
但是,即使materiali.js文件在texture.js之后加载,它似乎也会得到一个空值

所以问题是:如何确保texture.js上的所有资源都可以从其他脚本中使用?有没有办法等待完成?我试着使用延迟键,但是,如果我理解正确的话,它只在脚本插入头部而不是身体时起作用

谢谢,这是事先准备好的