Преобразован JavaScript в FBJS - вкладки все еще не работают - PullRequest
4 голосов
/ 18 апреля 2010

Я старался изо всех сил конвертировать 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>

Спасибо за любой ответ.

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

Вкладки FBML (которые используют FBJS) устарели и будут отключены в будущем.Вы должны создать новое приложение с вкладкой IFRAME (которая по умолчанию сейчас).

Вкладки IFRAME - это просто вкладки с IFRAME внутри, и ваш код загружается в этот iframe с указанного URL-адреса как любая другая веб-страница.В нем можно использовать любые фреймворки Javascript (например, jQuery), поэтому вам не нужно учиться писать на FBJS.

0 голосов
/ 10 августа 2011

Настройка страницы Facebook , которая использует приложение Facebook . Убедитесь, что вы настроили свое приложение, используя iFrame, который указывает на файл на вашем сервере. Вы получите гораздо больше свободы при использовании iFrame, когда дело доходит до Javascript, и это отличный способ использовать CMS, если вам также потребуется это сделать. Удачи!

...