【问题标题】:How do I change/replace a flash object with jquery or pure javascript?如何使用 jquery 或纯 javascript 更改/替换 flash 对象?
【发布时间】:2010-09-18 08:15:20
【问题描述】:
我想在 onClick 事件之后更改包含在 jQuery 中的 flash 对象。我写的代码,本质上是:
$(enclosing div).html('');
$(enclosing div).html(<object>My New Object</object>);
在 Firefox 中有效,但在 IE 中无效。我将不胜感激有关这样做的指针或建议。谢谢。
【问题讨论】:
标签:
javascript
jquery
flash
【解决方案1】:
empty() 方法是删除内容的更好方法。不知道这是否能解决你的问题:)
$('#mydiv').empty();
您也可以尝试replaceWith(content) 方法。
【解决方案2】:
这就是我正在做的——它取自 swfobject 并稍作修改:
function removeObjectInIE(el) {
var jbo = (typeof(el) == "string" ? getElementById(el) : el);
if (jbo) {
for (var i in jbo) {
if (typeof jbo[i] == "function") {
jbo[i] = null;
}
}
jbo.parentNode.removeChild(jbo);
}
}
function removeSWF(id) {
var obj = (typeof(id) == "string" ? getElementById(id) : id);
if(obj){
if (obj.nodeName == "OBJECT" || obj.nodeName == "EMBED") {
if (ua.ie && ua.win) {
if (obj.readyState == 4) {
removeObjectInIE(id);
}
else {
$(document).ready(function() { removeObjectInIE(id); });
}
}
else {
obj.parentNode.removeChild(obj);
}
}else if(obj.childNodes && obj.childNodes.length > 0){
for(var i=0;i<obj.childNodes.length;i++){
removeSWF(obj.childNodes[i]);
}
}
}
}
所以你会这样做removeSWF("mydiv"); - 你可能想以 jQuery 的方式重写它,这是从我正在研究的一个库中获取的,我不能确定 jQuery 会在那里。 (我用 $().ready() 替换了我的准备就绪功能)
【解决方案3】:
试试$().remove() 方法。这也删除了事件处理程序以避免内存泄漏问题,这也是为什么将 HTML 设置为空不是一个好主意的原因之一。