我正在尝试向(我自己的)Google Chrome扩展程序添加“共享”功能,但我偶然发现了变量和网址的问题(在JavaScript方面我没用)。
我的代码在下面,如果有人可以指导我去哪里,我将非常感激。
<script>
chrome.tabs.getSelected(null, function(tab) {
document.getElementById('longLink').value = tab.url;
});
var shareURL = document.getElementById('longLink')
</script>
<a href="https://twitter.com/?status=" + shareURL + "&choe=UTF-8" target="_blank">Tweet This</a>
我也试过
<a href="https://twitter.com/?status=" + encodeURIComponent(shareURL); + "&choe=UTF-8" target="_blank">Tweet This</a>
最后,我尝试了这种方法
<script>
function tweet() {
var twitter='http://twitter.com/?status='+encodeURIComponent(tab.url);
chrome.tabs.create({url: twitter});
}
</script>
<a onClick="tweet()" href="" target="_blank">Tweet</a>
答案 0 :(得分:0)
// Takes a url, a GET parameter name and value and returns
// the given URL but with the given parameter at the end of
// the query portion.
function urlWithParameter(url, name, value) {
// Find the fragment since the query ends where the fragment starts.
var fragmentStart = url.indexOf('#');
if (fragmentStart < 0) { fragmentStart = url.length; }
var urlBeforeFragment = url.substring(0, fragmentStart);
// If there is no query (no '?' in URL) then start the parameter with
// a '?' to create a query. Otherwise separate the parameter from
// the existing query with a '&'.
// We use encodeURIComponent which assumes UTF-8 to escapes special URL
// characters like '#', '&', '?', '%', and '='.
// It assumes UTF-8. Any replacement that does not assume UTF-8 must escape
// at least the code-points listed above.
return urlBeforeFragment + (urlBeforeFragment.indexOf('?') < 0 ? '?' : '&')
+ encodeURIComponent(name) + '=' + encodeURIComponent(value)
+ url.substring(fragmentStart);
}
可以这样使用
<script>/* the function above */</script>
<a onclick="this.href = urlWithParameter('http://twitter.com/', 'status', tab.url)" href="#">...</a>
执行您想要的操作,同时仍然尊重target
隐含的链接<base target="...">
,并在悬停时仍显示有用的网址。
或者,如果您只需要操作一个参数,那么您可以使用早期的解决方案
<a onclick="this.href = 'http://twitter.com/?status=' + encodeURIComponent(tab.url)" href="http://twitter.com/">...</a>
编辑:要使用异步chrome访问器,请尝试以下操作:
<script>
function redirectWithSelectedTabUrl(link) {
chrome.tabs.getSelected(null, function (tab) {
window.location.href = tab.url
? link.href + "?status=" + encodeURIComponent(tab.url)
: link.href;
};
return false;
}
</script>
<a href="http://twitter.com/" onclick="return redirectWithSelectedTabUrl(this)">...</a>
这很简单,适用于各种浏览器,但它会忽略target
,并且可能无法发送引荐来源标头。