我有以下情况.
我向用户显示一些来自服务器的音频文件.用户单击一个,然后onFileSelected最终与选定的文件夹和文件一起执行.该功能的作用是从嵌入式对象更改源.所以在某种程度上,它是在接受之前预览所选文件并保存用户的选择. A visual aid.
HTML
<embed src="/resources/audio/_webbook_0001/embed_test.mp3" type="audio/mpeg" id="audio_file">
JavaScript的
function onFileSelected(file,directory) { jQuery('embed#audio_file').attr('src','/resources/audio/'+directory+'/'+file); };
现在,这在Firefox中运行正常,但Safari和Chrome只是拒绝更改源代码,无论操作系统如何.
jQuery发现对象(jQuery.size()返回1),它执行代码,但HTML代码没有变化.
为什么Safari阻止我改变< embed>来源和我如何规避这个?
解决方法
您应该删除嵌入元素并重新注入新的src参数集.
嵌入像对象和类似的是两个元素,它们在一些浏览器中的特殊用途(视频,音频,闪存,activex,…)的处理方式与普通的DOM元素不同.因此,更改src属性可能不会触发您期望的操作.
最好的办法是删除现有的嵌入对象,重新插入它.如果您使用src属性作为参数编写某种包装函数,这应该很简单