我正在尝试使用带空格的网址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, '+');
但是我需要注意其他字符还是有更好的解决方法?
答案 0 :(得分:11)
请改为尝试:
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网址和查询字符串参数的编码。
答案 1 :(得分:0)
您必须对网址进行编码。
网址中不能有任何空格。
因此,浏览器会根据需要重新解释网址空间,除非您确切地告诉它如何:
var msg = 'Hello,%20world!';
答案 2 :(得分:0)
我遇到了同样的问题。似乎如果你使用网址http://www.twitter.com
,你的msg会被转义两次。如果您查看twitters dev page,则会使用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或转义。