JavaScript:更改embedded标签的src属性
我有以下情况。
我向用户显示一些来自服务器的audio文件。 用户点击一个,然后onFileSelected最终与选定的文件夹和文件执行。 函数做的是从embedded对象中改变源代码。 所以在某种程度上,它是在接受它之前预览选定的文件并保存用户的select。 一个视觉援助 。
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只是拒绝更改源代码,而不考虑操作系统。
jQueryfind对象(jQuery.size()返回1),它执行代码,但没有改变HTML代码。
为什么Safari会阻止我更改<embed>
源代码,我怎样才能绕过这个呢?
你应该删除embed
元素,并重新注入新的src
参数集。
embed
像object
和类似的两个元素,由于他们的特殊用途(video,audio,Flash,ActiveX,…),在一些浏览器中处理不同于正常的DOM元素。 因此,更改src属性可能不会触发您所期望的操作。
最好的办法是删除现有的embed
对象,重新插入它。 如果你用src属性作为参数编写某种包装函数,这应该很容易
当我想要改变“embedded”元素的“src”属性时,我也面临同样的问题,所以我做了如下:
var parent = $('embed#audio_file').parent(); var newElement = "<embed src='new src' id='audio_file'>"; $('embed#audio_file').remove(); parent.append(newElement);
这在我的应用程序中可以正常工作。
结论: – 你需要先删除embedded元素,然后你必须重新插入src中的改变。
Chrome中存在一个错误,请给它一颗明星,让它尽早修复: http : //code.google.com/p/chromium/issues/detail? id= 69648
JQuery遵循CSS样式声明:
而不是做
function onFileSelected(file, directory) { jQuery('embed#audio_file').attr('src', '/resources/audio/'+directory+'/'+file); };
而不是
function onFileSelected(file, directory) { jQuery('#audio_file').attr('src', '/resources/audio/'+directory+'/'+file); };
这样,jQuery只检索id =“audio_file”的对象。