为什么我的页面标题中有不间断的空格?

时间:2010-10-02 01:35:37

标签: javascript http

我正在通过JSONP注入脚本并使用它来调用我的Web应用程序中的方法,如下所示:

(function jsonp(src){
    var b = document.body;
    var t = document.title;
    var u = encodeURI(document.location.href);

    var o = document.getElementById('srv-call');
    o && b.removeChild(o);

    var s = document.createElement('script');   
    s.id = 'srv-call';
    s.src = src + '?w=' + textSelection + '&cb=autoCall&u=' + u + '&pt=' + t + '&t=' + (new Date().getTime());
    b.appendChild(s);
})('http://localhost:8888/wordmark/words/add_word');

不幸的是,我的document.title充满了不间断的空间。一个示例http请求是:

http://localhost:8888/wordmark/words/add_word?w=problems&cb=autoCall&u=http://www.boingboing.net/2010/10/01/kid-demonstrates-eng.html&pt=%E2%80%8BK%E2%80%8Bi%E2%80%8Bd%E2%80%8B%20%E2%80%8Bd%E2%80%8Be%E2%80%8Bm%E2%80%8Bo%E2%80%8Bn%E2%80%8Bs%E2%80%8Bt%E2%80%8Br%E2%80%8Ba%E2%80%8Bt%E2%80%8Be%E2%80%8Bs%E2%80%8B%20%E2%80%8BE%E2%80%8Bn%E2%80%8Bg%E2%80%8Bl%E2%80%8Bi%E2%80%8Bs%E2%80%8Bh%E2%80%8B%20%E2%80%8Bl%E2%80%8Ba%E2%80%8Bn%E2%80%8Bg%E2%80%8Bu%E2%80%8Ba%E2%80%8Bg%E2%80%8Be%E2%80%8B%20%E2%80%8Bi%E2%80%8Bn%E2%80%8B%20%E2%80%8B2%E2%80%8B4%E2%80%8B%20%E2%80%8Ba%E2%80%8Bc%E2%80%8Bc%E2%80%8Be%E2%80%8Bn%E2%80%8Bt%E2%80%8Bs%E2%80%8B%20%E2%80%8B-%E2%80%8B%20%E2%80%8BB%E2%80%8Bo%E2%80%8Bi%E2%80%8Bn%E2%80%8Bg%E2%80%8B%20%E2%80%8BB%E2%80%8Bo%E2%80%8Bi%E2%80%8Bn%E2%80%8Bg&t=1285982312594

页面中注入的脚本具有正确的src,但HTTP请求不正确。知道为什么要插入它们,如果我有任何办法可以避免这种情况,除了通过正则表达式解析出来之外?

非常感谢您提供的任何帮助。

4 个答案:

答案 0 :(得分:2)

我刚刚意识到罪魁祸首。我为浪费每个人的时间而道歉,但是如果有其他人遇到这个问题,那么问题就是SMRT Safari Extension会改变Safari的URL自动完成功能。 -1对于我没有禁用所有扩展和尝试多个浏览器。谢谢,全部。

答案 1 :(得分:1)

您是否尝试使用decodeURIComponent(t)代替t

s.src = src + '?w=' + textSelection + '&cb=autoCall&u=' + u + '&pt=' + decodeURIComponent(t) + '&t=' + (new Date().getTime());

答案 2 :(得分:1)

您需要做的是在您的行

中取消变量t
s.src = src + '?w=' + textSelection + '&cb=autoCall&u=' + u + '&pt=' + t + '&t=' + (new Date().getTime());

所以你的链接看起来就像这样:

http://localhost:8888/wordmark/words/add_word?w=problems&cb=autoCall&u=http://www.boingboing.net/2010/10/01/kid-demonstrates-eng.html&&t=1285982312594

如果你必须有t变量,那么将它插入到这样的行中

....(code before) '&pt=' + decodeURIComponent(t) + (code after)......

希望这会有所帮助。感谢

<强> PK

答案 3 :(得分:0)

这些不是不间断的空格,而是zero-width spaces(U + 200B)。它们通常不可见,并且可能出现在原始标题中(用于文本包装或其他任何原因)。