我正在通过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请求不正确。知道为什么要插入它们,如果我有任何办法可以避免这种情况,除了通过正则表达式解析出来之外?
非常感谢您提供的任何帮助。
答案 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)
您需要做的是在您的行
中取消变量ts.src = src + '?w=' + textSelection + '&cb=autoCall&u=' + u + '&pt=' + t + '&t=' + (new Date().getTime());
所以你的链接看起来就像这样:
如果你必须有t变量,那么将它插入到这样的行中
....(code before) '&pt=' + decodeURIComponent(t) + (code after)......
希望这会有所帮助。感谢
<强> PK 强>
答案 3 :(得分:0)
这些不是不间断的空格,而是zero-width spaces(U + 200B)。它们通常不可见,并且可能出现在原始标题中(用于文本包装或其他任何原因)。