开发者

Javascript window.open url with spaces and %

I'm trying window.open with a url with spaces:

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

Running this code will open a new window with http://twitter.com/share?text=Hello,%2520world!&url=http://yoursite.com.

What happens is that the space in msg is converted to %20, then the '%' is c开发者_JAVA技巧onverted to %25. As a workaround, i added:

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

But are there other chars i need to watch out for or is there a better workaround?


Try this instead:

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

Note the different Twitter url and the encoding of the query string params.


you have to encode URLs.

There cannot be any spaces in the URL.

Therefore the browser reinterprets the url spaces as it wants unless you tell it exactly how:

var msg = 'Hello,%20world!';


I had the same problem. It seems that if you use the url http://www.twitter.com your msg gets escaped twice. If you look at twitters dev page, they use https://twitter.com.

For your code, remove the www and I think it's good to use https instead of http

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

You don't even need to use encodeURI or escape on your message.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜