2011-03-15 30 views
7

मैं रिक्त स्थान के साथ एक यूआरएल के साथ window.open कोशिश कर रहा हूँ के साथ जावास्क्रिप्ट 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 के साथ एक नया विंडो खुलेगा।

क्या होता है कि संदेश में स्थान% 20 में परिवर्तित हो जाती है, तो '%' को% 25 में परिवर्तित कर दिया जाता है। समाधान के लिए, मैं कहा:

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

लेकिन कुछ अन्य वर्ण मैं के लिए बाहर देखने की जरूरत है या वहाँ एक बेहतर समाधान नहीं है कर रहे हैं?

+0

ऐसा नहीं होना चाहिए। – SLaks

+0

मैं यह जोड़ना भूल गया कि मैं jQuery के साथ ड्रूपल का उपयोग कर रहा हूं। यह कोड Drupal.behaviors के भीतर लपेटा गया है ... नहीं कि मुझे लगता है कि ये कुछ भी प्रभावित करते हैं। – nymo

उत्तर

0

आपको यूआरएल एन्कोड करना होगा।

यूआरएल में कोई जगह नहीं हो सकती है।

इसलिए ब्राउज़र यूआरएल रिक्त स्थान reinterprets के रूप में यह चाहता है जब तक आप इसे बता वास्तव में कैसे:

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

कोई पासा नहीं,% को% 25 – nymo

+0

आईडीके में परिवर्तित कर दिया गया है। अपने यूआरएल – Neal

+0

हां में रिक्त स्थान का उपयोग न करें, इसलिए '+' कोड को प्रतिस्थापित करें। – nymo

10

ऐसा करें:

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

नोट अलग ट्विटर यूआरएल और क्वेरी की एन्कोडिंग स्ट्रिंग पैराम्स

0

मुझे एक ही समस्या थी। ऐसा लगता है कि यदि आप यूआरएल http://www.twitter.com का उपयोग करते हैं तो आपका संदेश दो बार से बच निकलता है। यदि आप twitters dev page देखते हैं, तो वे https://twitter.com का उपयोग करते हैं।

अपने कोड के लिए, www को हटा दें और मुझे लगता है कि यह https

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

के बजाय http तुम भी encodeURI का उपयोग करें या अपने संदेश पर से बचने के लिए की जरूरत नहीं है का उपयोग करने के लिए अच्छा है।

संबंधित मुद्दे