如何使用 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(或纯 JS)添加新的 DOM 元素

如何使用 jQuery 或仅使用 Javascript 将按钮重定向到另一个页面

使用 JavaScript/jQuery 将 URL 保存在锚标记中?

jQuery / AJAX - 响应格式

jquery ajax - 更好地返回 json 或纯 html