2010-01-01 4 views
1

Je voudrais personnaliser mon contenu de formulaire de demande en utilisant javascript. Dire que j'ai dans mon html ...Comment modifier dynamiquement le contenu de fb: request-form en utilisant Javascript?

<div id="invite"> 
<fb:serverfbml style="width: 600px; height: 650px;"> 
    <script type="text/fbml"> 
     <fb:request-form 
      action="index.php" 
      method="POST" 
      invite="true" 
      type="MyApp" 
      content="Please have a look at my new __DYNAMICNAME_HERE__. 
       <fb:req-choice url='http://apps.facebook.com/myapp/' label='View Now!' />" > 

      <div class="clearfix" style="padding-bottom: 10px;"> 
       <fb:multi-friend-selector condensed="true" style="width: 600px;" /> 
      </div> 
      <fb:request-form-submit /></fb:request-form> 
    </script> 
</fb:serverfbml></div> 

Je voudrais changer dynamiquement _DYNAMICNAME_HERE_ à quelque chose d'autre via Javascript.

Voici les choses que j'ai essayées.

function technique1() 
{ 
    var elem = document.getElementById("invite"); 
    elem.innerHtml = elem.innerHTML.replace("__DYNAMICNAME_HERE__", "MyName"); 
    // show div code... 

    // result is, the current page get's re-rendered inside the div, instead of the FB controls. 
} 

function technique2() 
{ 
    // Delete all code inside the div... then construct the content using javascript. 

    var elem = document.getElementById("invite"); 
    elem.innerHtml = text;// text is the div innerHtml code constructed at runtime. 

    // run show div code 
    // result is nothing shows. 
} 

function technique3() 
{ 
    // First, we remove all code from the div 
    // put them into another php page called invite.php 

    var elem = document.getElementById("invite"); 
    elem.innerHtml = "<iFrame src=\"www.myserver.com/invite.php?name=myname\"></iFrame>"; 

    // run show div code 
    // It works but requires 1 more request to the server. 
} 

Est-ce que quelqu'un connaît une technique qui n'implique pas une requête supplémentaire au serveur (invite.php)? Peut-être impliquant FB.XFBML.Host.addElement, rafraîchir etc ...

Btw, j'utilise la fermeture de Google le handle popping up the div.

Merci.

Répondre

0

Il est actuellement conçu pour permettre ce genre de manipulation. une chose que vous pouvez faire est de rendre plus d'un fb: request-form, la plupart d'entre eux dans < div> s avec style = "display: none", puis changer lequel est affiché avec javascript. C'est une solution limitée car elle vous donne des choix limités qui doivent être déterminés au moment du rendu, mais AFAIK vous ne pouvez tout simplement pas obtenir les attributs html une fois qu'il est rendu.

1

J'ai également rencontré le même problème et l'ai résolu de la façon dont le teepark suggéré. Je ne pouvais pas changer le HTML des tags de facebook car ils restituent dans un iframe. Ma page est sur www.____.com et l'iframe est sur www.facebook.com. Je ne peux pas modifier le contenu de cette iframe en raison de politiques inter-domaines.

Questions connexes