Twitter'da sorgu dizesiyle URL paylaşma


118

Bir e-postaya Twitter paylaşım bağlantısı koymaya çalışıyorum. Bu bir e-postada olduğu için JavaScript'e güvenemiyorum ve "Kendi Tweetini Oluştur" düğmesini kullanmam gerekiyor.

Örneğin, Google ile bir bağlantı paylaşmak:

<a href="http://www.twitter.com/share?url=http://www.google.com/>Tweet</a>

Bu iyi çalışıyor. Yaşadığım sorun, URL'nin bir sorgu dizesine sahip olmasıdır.

<a href="http://www.twitter.com/share?url=http://mysite.org/foo.htm?bar=123&baz=456">Tweet</a>

Sorgu dizelerine sahip URL'ler Twitter'ın URL kısaltma hizmeti olan t.co.'yi karıştırır Bunu çeşitli şekillerde kodlamayı denedim ve işe yarayacak hiçbir şey bulamıyorum. En yakın olduğum şey bunu yapmaktır.

<a href="http://www.twitter.com/share?url=http://mysite.org/foo.htm%3Fbar%3D123%26baz%3D456">Tweet</a>

Burada sadece sorgu dizesini kodladım. Bunu yaptığımda, t.co URL'yi başarılı bir şekilde kısaltıyor, ancak kısaltılmış bağlantıyı izledikten sonra sizi kodlanmış URL'ye götürüyor. http://mysite.org/foo.htm%3Fbar%3D123%26baz%3D456Adres çubuğunda görüyorum ve tarayıcıda aşağıdaki hatayı alıyorum

Bulunamadı

İstenen URL /foo.htm?bar=123&baz=456 bu sunucuda bulunamadı.

Bu sorunu nasıl çözeceğimi bilemiyorum.

Düzenleme: Re: onteria_

URL'nin tamamını kodlamayı denedim. Bunu yaptığımda Tweette hiçbir URL görünmüyor.


1
TÜM URL'yi url kodlamanız gerekir. Bu http://aşağıdan itibaren her şeyi içerir
onteria_

Yanıtlar:



110

Bu, https://twitter.com/intent/tweetyerine kullanılarak çözülebilir http://www.twitter.com/share. Bu intent/tweetişlevi kullanarak, tüm URL'nizi URL olarak kodlarsınız ve bir cazibe gibi çalışır.

https://dev.twitter.com/web/intents


Plume ve Tweetcaster bu formatı işlemez (URL'ye bağlı olarak sadece niyet veya paylaşım profilini gösterirler). Tweetdeck, twitter.com URL'lerini hiç işlemiyor gibi görünüyor.
Pierre-Luc Paour


2
https://twitter.com/intent/tweet?text={text_to_share}tüm platformlarda mükemmel çalışır. Bunun için tepeden tırnağa arıyordum .. Teşekkürler!
Jack Dewhurst


6

Bundan daha basit olamaz:

<a href="https://twitter.com/intent/tweet?text=optional%20promo%20text%20http://example.com/foo.htm?bar=123&baz=456" target="_blank">Tweet</a>

4

Şu işlevleri kullanabilirsiniz:

 function shareOnFB(){
       var url = "https://www.facebook.com/sharer/sharer.php?u=https://yoururl.com&t=your message";
       window.open(url, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600');
       return false;
  }


function shareOntwitter(){
    var url = 'https://twitter.com/intent/tweet?url=URL_HERE&via=getboldify&text=yourtext';
    TwitterWindow = window.open(url, 'TwitterWindow',width=600,height=300);
    return false;
 }


function shareOnGoogle(){
     var url = "https://plus.google.com/share?url=https://yoururl.com";
     window.open(url, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=350,width=480');
     return false;
}


<a onClick="shareOnFB()"> Facebook </a>
<a onClick="shareOntwitter()"> Twitter </a>
<a onClick="shareOnGoogle()"> Google </a>

Javascript'e dayanmayan bir çözüm var url = ..., e-postayı oluştururken yalnızca bu bağlantıları (in ) oluşturur.
Thomas Ebert


3

Tüm yöntemleri referans alıyorum.

Sorguyu iki kez kodlamak hızlı çözümdür.

const query = a=123&b=456;
const url = `https://example.com/test?${encodeURIComponent(encodeURIComponent(query),)}`;


const twitterSharingURL=`https://twitter.com/intent/tweet?&url=${url}`

2

Mutlaka niyet kullanmanız gerekmez, URL'nizi kodlarsanız, twitter paylaşımıyla da çalışacaktır.


1

@Onteria_'da belirtildiği gibi, tüm parametreyi kodlamanız gerekir. Aynı sorunla karşılaşan diğer herkes için, doğru kodlanmış url'yi oluşturmak için aşağıdaki yer imini kullanabilirsiniz. Twitter paylaşım url'sini oluşturmak için kopyalayıp tarayıcınızın adres çubuğuna yapıştırın . Emin olunjavascript:Önekin adres çubuğuna kopyaladığınızda orada olduğundan , Google Chrome kopyalama sırasında onu kaldırır.

javascript:(function(){var url=prompt("Enter the url to share");if(url)prompt("Share the following url - ","http://www.twitter.com/share?url="+encodeURIComponent(url))})();

JS Fiddle'da kaynak http://jsfiddle.net/2frkV/


1

Kılavuzu html sitesine eklerseniz, değiştirin:

&

İle

&amp;

& İçin standart html kodu


0

Twitter artık URL'yi bir veri özelliği aracılığıyla göndermenize izin veriyor. Bu benim için harika çalışıyor:

<a href="javascript:;" class="twitter-share-button" data-lang="en" data-text="check out link b" data-url="http://www.lyricvideos.org/tracks?videoURL=SX05JZ4FisE">Tweet</a>

Bunun, URL'yi öznitelikten almak ve ardından tarayıcıyı doğru URL'ye yönlendirmek için twitter API'sindeki javascript'e dayanıp dayanmadığını test eden var mı?
Mark

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.