如何使用 jquery 或纯 javascript 更改/替换 flash 对象?
Posted
技术标签:
【中文标题】如何使用 jquery 或纯 javascript 更改/替换 flash 对象?【英文标题】:How do I change/replace a flash object with jquery or pure javascript? 【发布时间】:2010-09-18 08:15:20 【问题描述】:我想在 onClick 事件之后更改包含在 jQuery 中的 flash 对象。我写的代码,本质上是:
$(enclosing div).html('');
$(enclosing div).html(<object>My New Object</object>);
在 Firefox 中有效,但在 IE 中无效。我将不胜感激有关这样做的指针或建议。谢谢。
【问题讨论】:
【参考方案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 设置为空不是一个好主意的原因之一。
【讨论】:
以上是关于如何使用 jquery 或纯 javascript 更改/替换 flash 对象?的主要内容,如果未能解决你的问题,请参考以下文章
使用 jQuery 或纯 Javascript 访问一组 HTML 输入文本框
如何使用 jQuery 或仅使用 Javascript 将按钮重定向到另一个页面