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参数集。

embedobject和类似的两个元素,由于他们的特殊用途(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”的对象。