Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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
Javascript 预加载声音文件_Javascript_Jquery_Html_Internet Explorer - Fatal编程技术网

Javascript 预加载声音文件

Javascript 预加载声音文件,javascript,jquery,html,internet-explorer,Javascript,Jquery,Html,Internet Explorer,希望有人能帮上忙,这让我发疯 我正在开发一个intranet应用程序,需要预加载大量(106!)MP3文件。我正在像这样预加载这些 for (i=0; i<mp3Files.length; i++) { soundSpan = document.createElement("span") soundFileLocation = "http://wss/sites/TDABQ/" + mp3Files[i] soundSpan.innerHTML="<em

希望有人能帮上忙,这让我发疯

我正在开发一个intranet应用程序,需要预加载大量(106!)MP3文件。我正在像这样预加载这些

for (i=0; i<mp3Files.length; i++) {

    soundSpan = document.createElement("span")

    soundFileLocation = "http://wss/sites/TDABQ/" + mp3Files[i]

    soundSpan.innerHTML="<embed src='" + soundFileLocation + "' hidden='true' autostart='false' loop='false' />"

    document.body.appendChild(soundSpan)
}
用于(i=0;i JS(或者是JS>Flash)安全设置。无法在客户端PC上更改这些设置

  • 我尝试过使用JQuery的Ajax和Get方法,但由于某些原因,无法让它跨域执行Ajax调用,例如,下面的代码从未显示警告框

    $(文档).ready(函数(){

    $.get({url:http://wss/sites/TDABQ/field1.mp3,crossDomain:true,success:function(){alert('yes!'})

    }))

  • 因此,我使用嵌入标记进行预加载。嵌入标记似乎不响应onLoad或onReadyStateChange事件处理程序

    我已经没有主意了


    如何确定何时加载了所有文件?

    AJAX调用不起作用,因为(对于跨域AJAX)JSONP请求是唯一允许发出的请求。当前示例不是请求JSON,而是请求mp3。您可以请求具有.mp3路径的JSON文件,但这并不能解决您的问题

    我不知道Sound Manager的内部工作原理。我会按照Esailija的建议,使用

    $("#yourEmbed").bind('load', function(){ 
      alert("Files loaded"); 
    });
    

    ready处理程序无法工作,因为它会在DOM完全加载后立即启动。

    您设置SoundManager了吗?@Esailija很抱歉,我不熟悉crossdomain.xml。我是否将名为crossdomain.xml的文件放在包含SoundManager文件的服务器根目录下,还是放在包含使用该文件的网页的服务器根目录下SoundManager?@user1555329您可以将其放在您试图从中检索mp3文件的位置。以下是您还设置了
    allowScriptAccess=“always”的更多信息
    在flash的html上?@11684我不认为您可以将JQuery的.ready方法应用于单个对象,我认为它只是在DOM就绪发生时触发的。无论如何,我尝试过它,它似乎总是执行代码,即使是不存在的嵌入对象!@user1555329您不能,它将与DOM就绪相同。
    $(任何内容).ready
    将始终保持DOM就绪状态。这只是用于加载jQuery的文档。您甚至无法将其他文档传递给它。您最好的办法是让flash正常工作,因为嵌入元素不支持onload。您可以在google上搜索SoundManager跨域问题,因为它是一个非常流行的库。我要睡觉了。感谢您的支持这是我的建议,但我担心代码似乎什么也做不了。我无法使用普通javascript/DOM或JQuery获取嵌入标记来触发onLoad事件。