我正在为我的应用开发网络分析。
客户端,我通过window.location
向服务器发送JSON.stringify(window.location)
个对象。
该对象在chrome,IE,opera中正确地进行了字符串化...但在Firefox中,它只返回{"constructor":{}}
。
Firefox会发生什么?
答案 0 :(得分:2)
我不知道为什么它在FireFox下不起作用(我认为它与window.location
的属性实际上是FireFox中的getter / setter这一事实有关),但这是一个简单的解决方案:只需复制对象。
var copy = {};
for (var i in window.location) {
copy[i] = window.location[i];
}
JSON.stringify(copy);
答案 1 :(得分:1)
或者,你不能简单地创建一个不是Location
API的新对象,而只是一个简单的KVP对象吗?
JSON.stringify({
href: window.location.href,
protocol: window.location.protocol,
host: window.location.host,
hostname: window.location.hostname,
port: window.location.port,
pathname: window.location.pathname,
search: window.location.search,
hash: window.location.hash,
username: window.location.username,
password: window.location.password,
origin: window.location.origin
});
答案 2 :(得分:0)
window.location是Location接口的实例。您可能希望将其url作为字符串。请改为window.location.href。
答案 3 :(得分:0)
奇特的解决方案确实有效。
var window_location = {};
for (var i in window.location) {
window_location[i] = window.location[i];
}
alert(JSON.stringify(window_location));
在行动here中查看此内容...