我有以下场景。
我向用户展示了一些来自服务器的音频文件。用户单击一个文件夹,然后最终对选定的文件夹和文件执行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>
源代码,我如何才能规避这一点?
发布于 2010-03-22 16:32:56
您应该删除embed
元素,并使用新的src
参数集重新注入它。
像object
和类似的embed
是两个元素,由于它们的特殊用途(视频、音频、flash、activex等),在一些浏览器中,它们的处理方式与普通的DOM元素不同。因此,更改src属性可能不会触发预期的操作。
最好的方法是删除现有的embed
对象,然后重新插入它。如果您以src属性作为参数编写某种包装器函数,这应该很容易
发布于 2011-07-26 05:44:22
当我想要更改"embed“元素的"src"-attribute时,我也遇到了同样的问题,所以我所做的事情如下所示:
var parent = $('embed#audio_file').parent();
var newElement = "<embed src='new src' id='audio_file'>";
$('embed#audio_file').remove();
parent.append(newElement);
这在我的应用程序中工作得很好。
结论:-您需要首先删除embed元素,然后在src中重新插入它。
发布于 2012-08-11 20:12:59
Chrome中有一个bug,给它一个星以便更快地修复它:http://code.google.com/p/chromium/issues/detail?id=69648
https://stackoverflow.com/questions/2493706
复制