0

嗨,我在使用 fbjs 并动态创建 div 然后使用 appendChild 将其附加到现有 div 时遇到问题。

这是一个例子:

var count = 0;
function addDiv(){
    var theDiv = document.createElement('div');
    theDiv.setId(count);
    theDiv.setInnerFBML('some html here');

    count++; 
    document.getElementById('someExistingDiv').appendChild(theDiv);
}

任何人都可以告诉我有什么问题,或者在使用 setInnerFBML 时 appendChild inSafari 是否有任何问题。这在使用 setTextValue 时效果很好。

PS 它适用于 Firefox,但不适用于 Safari(具体是 Safari 4.0.3)

谢谢

更新:

它适用于附加的第一个 div 并在之后失败

4

2 回答 2

1

setInnerFBML 只接受预渲染的 FBML,因此它要么来自 FBML ajax 请求,要么在 fb:js-string 标签中预渲染。它不能即时生成。

于 2010-07-27T20:50:18.107 回答
0

事实证明,这是一个尚未修复的已知错误。现在我创建了一个解决方法,并将其发布在这里以供将来参考。

由于 setInnerFBML 处理第一个追加并在之后失败(不知道为什么),我决定克隆第一个追加的 div 并将其用于将来的追加。这是我的代码。

var count = 0;
function addDiv(){
    if(count == 0){
        var theDiv = document.createElement('div');
        theDiv.setInnerFBML('some html here');
    }else{
        var theDiv = document.getElementById('0').cloneNode(true);
    }

    theDiv.setId(count);
    count++; 

    document.getElementById('someExistingDiv').appendChild(theDiv);
}

希望这可以帮助某人。

于 2009-11-27T17:05:42.500 回答