我有以下情况。
我向用户显示服务器的一些音频文件。用户单击一个,然后最终使用所选文件夹和文件执行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>
来源,我该如何规避?
答案 0 :(得分:21)
您应该删除embed
元素并使用新的src
参数集重新注入它。
embed
这样的object
和类似的两个元素,由于它们的特殊用途(视频,音频,flash,activex,...),在某些浏览器中的处理方式与普通DOM不同元件。因此,更改src属性可能不会触发您期望的操作。
最好的办法是删除现有的embed
对象并重新插入它。如果您使用src属性作为参数编写某种包装函数,这应该很容易
答案 1 :(得分:4)
当我想要更改“embed”元素的“src” - 属性时,我也面临同样的问题,所以我所做的,如下所示:
var parent = $('embed#audio_file').parent();
var newElement = "<embed src='new src' id='audio_file'>";
$('embed#audio_file').remove();
parent.append(newElement);
这将在我的应用程序中正常工作。
结论: - 你需要首先删除embed元素,然后你必须在src中更改它重新插入。
答案 2 :(得分:3)
这是 Chrome 中的一个错误。替代解决方案不是更改嵌入元素的 src,而是尝试用新的 src 替换克隆的嵌入
$('embed').replaceWith($('embed').clone().attr('src','anotherfile.swf'));
答案 3 :(得分:2)
Chrome中存在一个错误,请尽快修复它:http://code.google.com/p/chromium/issues/detail?id=69648
答案 4 :(得分:1)
JQuery遵循CSS-esque声明:
而不是做
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”的对象。
答案 5 :(得分:0)
将div添加到嵌入代码中,
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': ['dog', 'cat', 'mouse', 'spider', 'fish', 'dog'],
'B': ['New York', 'London', np.nan, 'Berlin', np.nan,
'Paris']})
df.loc[(~df["A"].str.contains("dog"))&(df["B"].notnull()),"A"] = df["B"]
print (df)
#
A B
0 dog New York
1 London London
2 mouse NaN
3 Berlin Berlin
4 fish NaN
5 dog Paris
在脚本中:
<div id="pdfId">
<embed src="/resources/audio/_webbook_0001/embed_test.mp3" type="audio/mpeg" id="audio_"/>
</div>
答案 6 :(得分:-1)
var element = document.getElementById('element-embed');
changeSrcEmbed(element,'https://coccoc.com');
function changeSrcEmbed(element, src) {
var id = element.id;
element.src = src;
var embedOld = document.getElementById(id);
var parent = embedOld.parentElement;
var newElement = element;
document.getElementById(id).remove();
parent.append(newElement);
}
<embed id="element-embed" style="width:1100px; height: 700px;">