将 JavaScript 转换为 FBJS - 选项卡仍然无法工作

发布于 2024-08-29 00:15:29 字数 1896 浏览 1 评论 0 原文

我尽力根据此页面将 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>

感谢您的任何回复。

I tried my best to convert JavaScript to FBJS according to this page: http://wiki.developers.facebook.com/index.php/FBJS.

Yet my tabs are still not working properly. Does anyone have any suggestions how to fix this so I can click through the tabs and display and hide content accordingly:

<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>

Thanks for any response.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

烟火散人牵绊 2024-09-05 00:15:29

FBML 选项卡(使用 FBJS)现已弃用,并将在将来禁用。您应该使用 IFRAME 选项卡创建一个新应用程序(现在是默认情况)。

IFRAME 选项卡只是内部带有 IFRAME 的选项卡,您的代码会像任何其他网页一样从指定的 URL 加载到此 iframe 中。您可以在其中使用任何 Javascript 框架(例如 jQuery),因此您无需学习如何编写 FBJS。

FBML tabs (which use FBJS) are deprecated now and will be disabled in the future. You should create a new application with IFRAME tab (which is by default now).

IFRAME tabs are just tabs with IFRAME inside, and your code is loaded into this iframe from a specified URL as any other web page. You can use any Javascript frameworks in it (like jQuery), so you don't need to learn how to write FBJS.

请爱~陌生人 2024-09-05 00:15:29

设置一个使用 Facebook 页面 .com/docs/guides/canvas/" rel="nofollow">Facebook 应用。确保使用指向服务器上文件的 iFrame 设置应用程序。当涉及 Javascript 时,使用 iFrame 会获得更多自由,如果您也需要这样做,那么这是利用 CMS 的好方法。祝你好运!

Setup a Facebook page that uses a Facebook app. Make sure you set up your app using an iFrame that points to a file on your server. You'll get a lot more freedom using an iFrame when it comes to Javascript and it's a great way to leverage a CMS if you're going to need to do that as well. Best of Luck!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文