2011-08-08 22 views
14

Actualmente estoy tratando de crear un botón de tweet con la función de recuento horizontal de forma dinámica:¿Cómo puedo crear dinámicamente un botón de tweet?

JavaScript

var twitter = document.createElement('a'); 
twitter.setAttribute('href', 'http://twitter.com/share'); 
twitter.setAttribute('class', 'twitter-share-button twitter-tweet'); 
twitter.setAttribute('data-url','http://mindcloud.co.uk/idea/?idea=' + this.id); 
twitter.setAttribute('data-count', 'horizontal'); 
twitter.setAttribute('data-via', 'jtbrowncouk'); 
twitter.style.top = '20px'; 
twitter.style.left = '300px'; 
twitter.innerHTML = "Tweet"; 

El problema que estoy teniendo es que el botón se muestra como un enlace de texto , no como un botón con la caja de conteo horizontal.

He creado un botón de Facebook de la misma manera, que funciona correctamente, sin embargo hacer que funcione utilizo el siguiente:

JavaScript

var facebook = document.createElement('fb:like'); 
facebook.setAttribute('id', 'like'+this.id); 
facebook.setAttribute('href', 'http://mindcloud.co.uk/idea/?idea=' + this.id);  
facebook.setAttribute('layout', 'button_count'); 
facebook.setAttribute('send', 'false');   
facebook.setAttribute('width' , '300'); 
facebook.setAttribute('font', ''); 
facebook.setAttribute('show_faces', 'true'); 
facebook.style.top = '0px'; 
facebook.style.left = '300px'; 

utilizando la siguiente:

FB.XFBML.parse(); 

para analizar y dibujar el recuadro. FB.XFBML.parse() viene de http://connect.facebook.net/en_US/all.js

Cuando creo el botón Tweet de manera estática dentro de un archivo .html, funciona correctamente. Estoy incluyendo la secuencia de comandos siguiente dentro de mi página de índice en el botón Tweet se debe crear de forma dinámica:

<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> 

Si usted puede ver lo que estoy haciendo incorrectamente, me comunique!

¡La siguiente captura de pantalla da una explicación visual de lo que está pasando mal con el botón tweet! Tweet button not displaying correctly.

Solución:

ahora he logrado resolver el problema. El problema que me imagino es que la secuencia de comandos de Twitter se está ejecutando con carga, y no se vuelve a ejecutar al crear el elemento.

utilizando el siguiente jQuery funciona correctamente!

$ .getScript ("http://platform.twitter.com/widgets.js");

+1

debe colocar la solución como respuesta y cerrar la pregunta – Chamilyan

Respuesta

32

Vale la pena señalar que a partir del recientemente puede utilizar la siguiente función de widget de Twitter:

twttr.widgets.load(); 

Suponiendo que haya cargado los widgets.js archivo:

<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> 

Esto volverá a crear dinámicamente el botón de tweet para usted.

+0

Esta es en realidad una mejor solución, si solo quiere que el script (re) cree el botón, en lugar de forzar una nueva carga. –

2

Solo está usando el código incorrecto. Para especificar la URL, use url, no data-url. Esto funciona:

var twitter = document.createElement('a'); 
twitter.setAttribute('href', 'http://twitter.com/share'); 
twitter.setAttribute('class', 'twitter-share-button twitter-tweet'); 
twitter.setAttribute('url','http://mindcloud.co.uk/idea/?idea=' + this.id); 
twitter.setAttribute('data-count', 'horizontal'); 
twitter.setAttribute('data-via', 'jtbrowncouk'); 
twitter.style.top = '20px'; 
twitter.style.left = '300px'; 
twitter.innerHTML = "Tweet"; 

Para más detalles, consulte la documentación de Twitter en https://dev.twitter.com/docs/tweet-button#properties

+0

Gracias por la información en la url, pero el principal problema que tengo es con el botón de tweet que aparece como texto. He tomado una captura de pantalla para mostrarte lo que quiero decir. http://i.imgur.com/J1qoA.png – Jack

+0

¿Qué navegador estás usando? Esto funciona para mí en Chrome EDITAR: Acabo de probarlo en Firefox. Veo a que te refieres. Veré si puedo ayudar. –

+0

@Jack ¿podría intentar iniciar la consola de Firefox? Recibo algunos errores de hojas de estilo CSS del dominio twimg.com de Twitter. EDITAR: De repente, ya no recibo más advertencias, pero el problema persiste. :/ –

6

Ahora he logrado resolver el problema. El problema que me imagino es que la secuencia de comandos de Twitter se está ejecutando con carga, y no se vuelve a ejecutar al crear el elemento.

utilizando el siguiente jQuery funciona correctamente!

$.getScript("http://platform.twitter.com/widgets.js"); 
Cuestiones relacionadas