我已尽力根据此页面将JavaScript转换为FBJS:http://wiki.developers.facebook.com/index.php/FBJS。
然而我的标签仍然无法正常工作。有没有人有任何建议如何解决这个问题所以我可以点击选项卡,相应地显示和隐藏内容:
<script type="text/javascript"><!--
var tabLinks = [];
var contentDivs = [];
function init() {
var tabListItems = document.getElementById('tabs').getChildNodes();
for ( var i = 0; i < tabListItems.length; i++ ) {
if ( tabListItems[i].getNodeName("LI") ) {
var tabLink = getFirstChildWithTagName( tabListItems[i], 'A' );
var id = getHash( tabLink.getAttribute('href') );
tabLinks[id] = tabLink;
contentDivs[id] = document.getElementById( id );
}
}
var i = 0;
for ( var id in tabLinks ) {
tabLinks[id].addEventListener(onclick, showTab)
tabLinks[id].addEventListener(onfocus, function() { this.blur() };
if ( i == 0 ) tabLinks[id].setClassName('selected');
i++;)
}
var i = 0;
for ( var id in contentDivs ) {
if ( i != 0 ) contentDivs[id].setClassName('tabContent hide');
i++;
}
}
function showTab() {
var selectedId = getHash( this.getAttribute('href') );
for ( var id in contentDivs ) {
if ( id == selectedId ) {
tabLinks[id].setClassName('selected');
contentDivs[id].setClassName('tabContent');
} else {
tabLinks[id].setClassName('');
contentDivs[id].setClassName('tabContent hide');
}
}
return false;
}
function getFirstChildWithTagName( element, tagName ) {
for ( var i = 0; i < element.getChildNodes().length; i++ ) {
if ( element.getChildNodes[i].getNodeName(tagName) ) return element.getChildNodes[i];
}
}
function getHash( url ) {
var hashPos = url.getLastIndexOf ( '#' );
return url.getSubString( hashPos + 1 );
}
init();
--></script>
感谢您的回复。
答案 0 :(得分:1)
FBML标签(使用FBJS)现已弃用,将来也会被禁用。您应该使用IFRAME选项卡创建一个新应用程序(现在默认情况下)。
IFRAME标签只是内置IFRAME的标签,您的代码会像指定的网页一样从指定的网址加载到此iframe中。您可以使用其中的任何Javascript框架(如jQuery),因此您无需学习如何编写FBJS。
答案 1 :(得分:0)
设置使用Facebook page的Facebook app。确保使用指向服务器上文件的iFrame设置应用程序。当涉及到Javascript时,使用iFrame可以获得更大的自由度,如果您还需要这样做,那么它是利用CMS的好方法。运气最好!