2010-06-16 2 views
5

Я использую валидатор W3C XHTML для проверки своих сайтов, и я получаю некоторые ошибки на страницах с FBML. Основной причиной таких ошибок является символ «&». Поскольку значения и атрибуты FBML генерируются «на лету», у меня нет возможности правильно кодировать символ перед его отображением.Facebook: Недопустимая отметка на FBML

Вопрос: Есть ли способ сообщить мне Facebook Connect, чтобы сделать отметку правильно?

Спасибо.

ответ

7

Попробуйте поставить код facebook в CDATA:

<script type="text/javascript"> 
/* <![CDATA[ */ 
document.write('<fb:login-button length="long" size="large" show-faces="true" perms="" onlogin="window.location=\'<?=current_url()?>\'"></fb:login-button>'); 
/* ]]> */ 
</script> 
2

Одним словом, не так далеко, насколько я знаю. В довершение, ГФ: * теги не проверять либо, даже если вы сделаете ваш HTML теги выглядеть следующим образом:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="en" lang="en"> 

Если это огромная проблема для вас, вы можете быть в состоянии уйти с помещением не-XHTML-совместимой разметки в собственный HTML-4.01-строчный iframe, чтобы в основном подметать дерьмо под ковриком.

Это может быть полезно:

http://wiki.developers.facebook.com/index.php/Facebook_Platform_for_Mobile:_XHTML

Некоторые немецкий парень также работал на нем:

http://translate.google.com/translate?js=y&prev=_t&hl=en&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fwww.ka-mediendesign.de%2Fblog%2Ffbml-in-xhtml-neue-version%2F&sl=de&tl=en

+0

еще не решает проблему амперсанд. –

1

Вот как я doi это. Оберните все теги fbml внутри, а затем используйте js, чтобы просто раскомментировать код fbml с помощью javascript. Вот пример:

Markup:

<P class="fbreplace" style="display: none;"> 
    <!-- FBML 
     <fb:like layout="standard" show_faces="false" colorscheme="light"></ fb: like> 
    -> 
</ p> 

JS (JQuery обязательно):

$(document).ready(function() { 
    $(".fbreplace").html.replace(/<!-- FBML /g, ""); 
    $(".fbreplace").html.replace(/ -->/g, ""); 
    $(".fbreplace").style.display = "block"; 
}); 
+0

Это интересно. Есть лучшие способы сделать это, но я просто не могу не сказать, что это действительно интересно. И это работает! –

Смежные вопросы