2015-12-11 10 views
11

Sto utilizzando il testo di Twitter js per calcolare la lunghezza del testo con gli URL contenenti # !. esempio:testo di Twitter js, non calcolando la lunghezza dal testo che contiene urls con #!

"Some text http://domain.com#!/path/p/56319216 #tag1 #tag2". 

in Firefox errore debugger genera su questa linea in

twttr.txt.regexen.extractUrl.exec(text); 

Nessun errore specifico Twitter testo js viene registrato invece i miei congela pagina e mi avvisa di fermare lo script, si prega di aiuto.

+1

Se si desidera calcolare la lunghezza di 'text', perché non semplicemente' text.length '? – Moin

+0

@Moin Twitter racchiude tutti gli URL in un tweet a t.co URL brevi. Quindi ho bisogno di calcolare la lunghezza del tweet prima di inviarlo a Twitter. – Dharmendra

+0

Stai utilizzando l'ultima versione da qui https://github.com/twitter/twitter-text/tree/master/js/pkg? – morloch

risposta

5

Una richiesta di pull come state fuse sul repository github sul 2012-05-31 introducendo la funzione twttr.txt.getTweetLength (testo, opzioni) che sta prendendo in considerazione t.co URL e definito come segue:

twttr.txt.getTweetLength = function(text, options) { 
if (!options) { 
    options = { 
     short_url_length: 22, 
     short_url_length_https: 23 
    }; 
} 
var textLength = text.length; 
var urlsWithIndices = twttr.txt.extractUrlsWithIndices(text); 

for (var i = 0; i < urlsWithIndices.length; i++) { 
    // Subtract the length of the original URL 
    textLength += urlsWithIndices[i].indices[0] -urlsWithIndices[i].indices[1]; 

    // Add 21 characters for URL starting with https:// 
    // Otherwise add 20 characters 
    if (urlsWithIndices[i].url.toLowerCase().match(/^https:\/\//)) { 
     textLength += options.short_url_length_https; 
    } else { 
     textLength += options.short_url_length; 
    } 
} 

return textLength; 
}; 

Così la vostra funzione appena diventato:

function charactersleft(tweet) { 
return 140 - twttr.txt.getTweetLength(tweet); 
} 

Inoltre, per quanto riguarda le migliori pratiche con t.co dobbiamo recuperare i valori short_url_length e short_url_length_https da twitter e passarli come il parametro options nel twttr.txt Funzione .getTweetLength:

Richiedi l'assistenza/configurazione GET una volta al giorno nell'applicazione e memorizza nella cache "short_url_length" (valore di lunghezza massima corrente di t.co) per 24 ore. Cache "short_url_length_https" (la lunghezza massima per i collegamenti t.co basati su HTTPS) e utilizzarla come la lunghezza degli URL basati su HTTPS. Soprattutto sapendo che alcuni cambiamenti nella lunghezza di t.co urls saranno efficaci il 2013-02-20 come descritto nel blog degli sviluppatori di twitter

Problemi correlati