Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的页面标题中有不间断的空格?_Javascript_Http - Fatal编程技术网

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

Javascript 为什么我的页面标题中有不间断的空格?,javascript,http,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(

我正在通过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请求不正确。你知道为什么要插入它们吗?除了通过正则表达式解析它们之外,我是否有办法避免这种情况


非常感谢您提供的帮助。

您是否尝试过使用
decodeURIComponent(t)
而不仅仅是
t

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

你需要做的是去掉行中的变量t

s.src = src + '?w=' + textSelection + '&cb=autoCall&u=' + u + '&pt=' + t + '&t=' + (new Date().getTime());
因此,您的链接将改为如下所示:

如果你必须有t变量,那么把它插入行中,就像这样

....(code before) '&pt=' + decodeURIComponent(t) + (code after)......
希望这有帮助。谢谢


PK

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

我刚刚意识到了罪魁祸首。很抱歉,我浪费了大家的时间,但如果其他人遇到这个问题,问题是SMRT Safari扩展改变了Safari的URL自动完成功能-感谢我没有禁用所有扩展并尝试多个浏览器。谢谢大家。

为什么要将当前页面标题传递到指向的链接?嘿,Sebastian,我从另一个页面获取一个单词,并将其传递到我的web应用程序,在那里它被插入到数据库中。我需要能够从URL和页面标题中找到单词的来源。不幸的是,即使使用decodeURIComponent,我在HTTP请求中也会得到相同的URL。这是因为您在URL中放置空格,并且它们由浏览器编码。没关系,您请求的服务器将自行解码,并且它将看到您的标题。因此,我希望在我对其进行编码后,会出现类似
Kid%20displates%20English%20language%20in%2024%20accents%20-%20Boing%20Boing
的内容,但它不会这样做。它在每个字符之间放置零宽度的空格。我误解了吗?谢谢你的澄清。它们似乎出现在我尝试的大多数页面上,我不知道为什么。这是有意义的,因为它作为
\u200b
插入到我的数据库中。我有删除这个的选项吗?我确实需要将标题作为一个查询字符串传递,所以我不能简单地删除它,而且我对decodeURIComponent也没有任何运气。还有其他想法吗?非常感谢您的帮助。+1感谢您发布回复并记录了一个谷歌现在能够回答的模糊问题。