如何使用jquery或纯javascript更改/替换flash对象?

时间:2008-10-21 15:06:43

标签: javascript jquery flash

我想在onClick事件后更改jQuery中包含的flash对象。我写的代码基本上是:

$(enclosing div).html('');
$(enclosing div).html(<object>My New Object</object>);

适用于Firefox但不适用于IE。我希望有关这方面的指示或建议。感谢。

3 个答案:

答案 0 :(得分:1)

empty()方法是删除内容的更好方法。不知道这是否能解决你的问题:)

$('#mydiv').empty();

您也可以尝试replaceWith(content)方法。

答案 1 :(得分:0)

尝试使用$()。remove()方法。这也会删除事件处理程序以避免内存泄漏问题,这也是将HTML设置为空的原因之一。

答案 2 :(得分:0)

这就是我正在做的事情 - 它取自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())

替换了我的on ready函数