7

我正在尝试window.open使用带有空格的网址:

var msg = 'Hello, world!';  
var url = 'http://yoursite.com';  
var link = 'http://www.twitter.com/share?text=' + msg + '&url=' + url; 
window.open(link);

运行此代码将打开一个带有http://twitter.com/share?text=Hello,%2520world!&url=http://yoursite.com.

发生的情况是 msg 中的空格转换为 %20,然后 '%' 转换为 %25。作为一种解决方法,我补充说:

msg = msg.replace(/\s/g, '+');

但是我需要注意其他字符还是有更好的解决方法?

4

3 回答 3

13

试试这个:

var msg = encodeURIComponent('Hello, world!');  
var url = encodeURIComponent('http://www.google.com');  
var link = 'http://twitter.com/intent/tweet?text=' + msg + '&url=' + url; 
window.open(link); 

注意不同的 Twitter url 和查询字符串参数的编码。

于 2011-07-20T15:53:12.877 回答
0

我有同样的问题。似乎如果您使用 url,http://www.twitter.com您的 msg 会被转义两次。如果您查看twitter 开发页面,他们使用https://twitter.com.

对于您的代码,请删除www,我认为使用https而不是http很好

var msg = 'Hello, world!';  
var url = 'http://yoursite.com';  
var link = 'https://twitter.com/share?text=' + msg + '&url=' + url; 
window.open(link);

您甚至不需要在消息上使用 encodeURI 或转义。

于 2012-02-03T20:29:49.107 回答
0

您必须对 URL 进行编码。

URL 中不能有任何空格。

因此,浏览器会根据需要重新解释 url 空间,除非您确切地告诉它如何:

var msg = 'Hello,%20world!';
于 2011-03-15T22:03:04.927 回答