0

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

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

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)
}

这可行,但需要一点时间,但是延迟加载不是问题。

问题是我无法找到一种方法来确定所有文件何时加载,以便我可以提示用户页面已准备好。

问题:

  1. 这必须在 Internet Explorer 6 上工作(是的,真的),以便排除 HTML5 / 音频

  2. 我无法将任何内容加载到存储此应用程序的服务器上(不要问),到目前为止已经排除了 SoundManager。我可以让 SoundManager 在与应用程序位于同一服务器上时正常工作,但尝试从另一台服务器加载 SoundManager 会导致 Flash > JS(或者是 JS > Flash)安全设置出现问题。这些设置不能在客户端 PC 上更改。

  3. 我尝试过使用 JQuery 的 Ajax 和 Get 方法,但由于某种原因无法让它跨域进行 Ajax 调用,例如以下代码从不显示警报框

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

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

    });

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

我已经没有想法了...

我如何找出所有文件何时加载???

4

2 回答 2

0

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

我不知道 Sound Manager 的内部工作原理。我会听从 Esailija 的建议并检查 crossdomain.xml

于 2012-07-26T21:30:26.910 回答
0

Ty using

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

The ready handler wont work, as it is fired as soon as the DOM has fully loaded.

于 2012-07-27T06:22:27.513 回答