Javascript window.open 带有空格和%的url

发布于 2024-10-22 00:54:19 字数 504 浏览 10 评论 0原文

我正在尝试使用带有空格的网址 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, '+');

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

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 converted 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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一紙繁鸢 2024-10-29 00:54:19

请尝试以下操作:

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 和查询字符串参数的编码。

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.

寂寞笑我太脆弱 2024-10-29 00:54:19

你必须对 URL 进行编码。

URL 中不能有任何空格。

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

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

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!';
丿*梦醉红颜 2024-10-29 00:54:19

我也有同样的问题。看来,如果您使用 url http://www.twitter.com 您的消息会被转义两次。如果您查看 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或转义在你的消息上。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文