在Twitter上与查询字符串共享URL
我正试图在电子邮件中添加一个Twitter共享链接。因为这是一封电子邮件,我不能依赖JavaScript,必须使用“构建自己的”推文按钮 例如,共享到Google的链接:在Twitter上与查询字符串共享URL,twitter,query-string,share,url-encoding,Twitter,Query String,Share,Url Encoding,我正试图在电子邮件中添加一个Twitter共享链接。因为这是一封电子邮件,我不能依赖JavaScript,必须使用“构建自己的”推文按钮 例如,共享到Google的链接: <a href="http://www.twitter.com/share?url=http://www.google.com/>Tweet</a> 这个很好用。我遇到的问题是当URL有一个查询字符串时 <a href="http://www.twitter.com/sh
<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混淆了Twitter的URL缩短服务t.co。我尝试过用各种方式对其进行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。这可以通过使用
https://twitter.com/intent/tweet
而不是http://www.twitter.com/share
。使用intent/tweet
功能,您只需对整个URL进行URL编码,它就像一个符咒
你不一定需要使用intent,只要你对你的URL进行编码,它也可以用于twitter共享。这对你很有用
http://twitter.com/share?text=text goes here&url=http://url goes here&hashtags=hashtag1,hashtag2,hashtag3
这里有一个关于它的活生生的例子
正如@onteria_uuu所提到的,您需要对整个参数进行编码。对于其他面临相同问题的人,您可以使用以下bookmarklet生成正确编码的url。将其复制粘贴到浏览器的地址栏中,以创建twitter共享url。当您将其复制到地址栏时,请确保
javascript:
前缀存在,谷歌浏览器在复制时会将其删除
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))})();
jsfiddle上的源代码
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>
您必须将url中的查询字符串更改为%26(&O)
看看这个:使用Twitter意图资源使用tweet web意图,这是一个简单的链接:
https://twitter.com/intent/tweet?url=<?=urlencode($url)?>
https://twitter.com/intent/tweet?url=
更多变量在您可以使用以下功能:
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>
函数shareOnFB(){
变量url=”https://www.facebook.com/sharer/sharer.php?u=https://yoururl.com&t=your 信息”;
打开(url,,“菜单栏=否,工具栏=否,可调整大小=是,滚动条=是,高度=300,宽度=600”);
返回false;
}
函数shareOntwitter(){
var url='1〕https://twitter.com/intent/tweet?url=URL_HERE&via=getboldify&text=yourtext';
TwitterWindow=window.open(url,'TwitterWindow',宽度=600,高度=300);
返回false;
}
函数sharengoogle(){
变量url=”https://plus.google.com/share?url=https://yoururl.com";
打开(url,,“菜单栏=否,工具栏=否,可调整大小=是,滚动条=是,高度=350,宽度=480”);
返回false;
}
脸谱网
啁啾
谷歌
再简单不过了:
<a href="https://twitter.com/intent/tweet?text=optional%20promo%20text%20http://example.com/foo.htm?bar=123&baz=456" target="_blank">Tweet</a>
如果您在html站点上添加手册,只需替换:
&
与
&的标准html代码引用了所有方法 将查询编码两次是快速解决方案
const query = a=123&b=456;
const url = `https://example.com/test?${encodeURIComponent(encodeURIComponent(query),)}`;
const twitterSharingURL=`https://twitter.com/intent/tweet?&url=${url}`
这对我有用:
- 在facebook上共享
- 在推特上分享
- 在linkedin上分享
在js文件中添加以下内容:
固定资产();
函数socialWindow(url){
左变量=(屏幕宽度-570)/2;
var top=(屏幕高度-570)/2;
var params=“menubar=no,toolbar=no,status=no,width=570,height=570,top=“+top+”,left=“+left;window.open(url,“NewWindow”,params);}
函数setShareinks(){
var pageUrl=encodeURIComponent(document.URL);
var tweet=encodeURIComponent($(“meta[property='og:description'])).attr(“content”);
$(.social share.facebook”)。在(“单击”,函数(){url=”https://www.facebook.com/sharer.php?u=“+pageUrl;
社交窗口(url);
});
$(.social share.twitter”)。在(“单击”,函数(){
url=”https://twitter.com/intent/tweet?url=“+pageUrl+”&text=“+tweet;
社交窗口(url);
});
$(.social share.linkedin”)。在(“单击”,函数(){
url=”https://www.linkedin.com/shareArticle?mini=true&url=“+pageUrl;
社交窗口(url);
})
}
希望这能很好地工作。您需要对整个url进行url编码。这包括了从http://downPlume到Tweetcaster的所有内容,但Tweetcaster不处理这种格式(它们只是根据URL显示意图或共享的配置文件)。Tweetdeck似乎根本无法处理twitter.com URL。另请参见此链接-
https://twitter.com/intent/tweet?text={text_to_share}
在所有平台上都能完美运行。我一直在到处找这个。。谢谢有没有人测试过这是否依赖于twitter API中的javascript从属性中提取url,然后将浏览器重定向到正确的url?包括一个关键片段来回答这个问题将有助于不依赖javascript的解决方案只构建这些链接(在var url=…
)当生成电子邮件时。如果它…你知道…回答了原始问题,那将是一个很好的答案。使用js Nice构建共享链接的完整文档我喜欢这个
const query = a=123&b=456;
const url = `https://example.com/test?${encodeURIComponent(encodeURIComponent(query),)}`;
const twitterSharingURL=`https://twitter.com/intent/tweet?&url=${url}`