Обмін URL-адресою із рядком запиту у Twitter


118

Я намагаюся розмістити посилання на спільний доступ у Twitter в електронному листі. Оскільки це повідомлення в електронному листі, я не можу покластися на JavaScript, і мені потрібно використовувати кнопку "Створіть свій власний".

Наприклад, обмін посиланням на Google:

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

Це чудово працює. Проблема, яка виникає у мене, коли в URL-адресі є рядок запиту.

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

URL-адреси з рядками запиту плутають службу скорочення URL-адрес Twitter, т.к. Я спробував кодувати URL різними способами і не можу нічого зробити. Найближче до мене дійшло це.

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

Тут я кодував лише рядок запиту. Коли я це роблю, t.co успішно скорочує URL-адресу, але, перейшовши на скорочене посилання, він перенесе вас до закодованої URL-адреси. Я бачу http://mysite.org/foo.htm%3Fbar%3D123%26baz%3D456в адресному рядку і отримую таку помилку в браузері

Не знайдено

Запрошена URL-адреса /foo.htm?bar=123&baz=456 не знайдена на цьому сервері.

Я в занепокоєнні, як вирішити цю проблему.

Редагувати: Re: onteria_

Я спробував кодувати всю URL-адресу. Після цього жодна URL-адреса не з’являється в Twitter.


1
Вам потрібно url-кодувати ВСІ URL-адресу. Сюди входить все, що http://знизу
onteria_

Відповіді:


171

Це буде працювати для вас

http://twitter.com/share?text=text goes here&url=http://url goes here&hashtags=hashtag1,hashtag2,hashtag3

Ось живий приклад про це


http://twitter.com/share?text=Im Sharing on Twitter & url = https: //stackoverflow.com/users/2943186/youssef-subehi&hashtags=stackoverflow,example,youssefusf


Була б гарною відповіддю, якби… ви знаєте… відповіли на початкове запитання.
Дейв Ленд

110

Це можна вирішити, використовуючи https://twitter.com/intent/tweetзамість http://www.twitter.com/share. Використовуючи intent/tweetфункцію, ви просто кодуєте всю свою URL-адресу, і це працює як шарм.

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


Plume та Tweetcaster не обробляють цей формат (вони просто показують профіль на наміри або спільний доступ, залежно від URL-адреси). Здається, Tweetdeck взагалі не обробляє URL-адреси twitter.com.
П’єр-Люк Паур

Також дивіться це посилання - blog.socialsourcecommons.org/2011/03/…
Alpesh Trivedi

2
https://twitter.com/intent/tweet?text={text_to_share}прекрасно працює на всіх платформах. Шукали для цього високі та низькі .. Дякую!
Джек Дюрхерст


6

Не стає простішим за це:

<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

Ви можете використовувати ці функції:

 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, просто створить ці посилання (в var url = ...) під час генерації електронної пошти.
Томас Еберт


3

Я посилаюся на всі методи.

Кодування запиту двічі - це швидке рішення.

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

Вам не обов’язково потрібно використовувати наміри, оскільки ви кодуєте свою URL-адресу, вона також буде працювати з twitter share.


1

Як зазначалося @onteria_, потрібно кодувати весь параметр. Для всіх, хто стикається з тією ж проблемою, ви можете використовувати наступний закладку для створення правильно закодованого URL-адреси. Скопіюйте вставте його в адресний рядок свого веб-переглядача, щоб створити URL-адресу спільного використання щебетання . Переконайтесь, що javascript:префікс присутній, коли ви копіюєте його в адресний рядок, Google Chrome видаляє його при копіюванні.

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 http://jsfiddle.net/2frkV/


1

Якщо ви додаєте посібник на html-сайт, просто замініть:

&

З

&amp;

Стандартний html-код для &


0

Тепер Twitter дозволяє вам надсилати URL-адресу через атрибут даних. Це для мене чудово працює:

<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>

Хтось перевіряв, чи покладається це на JavaScript з API twitter, щоб витягнути URL-адресу з атрибуту, а потім перенаправити браузер на потрібну URL-адресу?
Марк

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.