奇怪的问题.我正在使用jQuery .postMessage()从安全的< iframe>发送消息.给父母具体来说,我正在发送一个URL,并已确认父级正在接收该URL-但是,当我尝试将window.location设置为该URL时,没有任何反应.
发送的网址:
http://mydomain.com/shop/507870?nav=ln-474#/shop/507870?gnrefine=1*COLOR_FAMILY*Brown%5E1*CLSR_TYP*Lace-Up%5E
实际网址:
http://mydomain.com/shop/507870?nav=ln-474#/shop/507870?gnrefine=1*COLOR_FAMILY*Brown%5E1*CLSR_TYP*Lace-Up%5E
他们匹配.但是,在Chrome中,如果我执行console.log(loginConfig.redirectURL);我得到:
http://mydomain.com/shop/507870?nav=ln-474#/shop/507870?gnrefine=1*COLOR_FAMILY*Brown%5E1*CLSR_TYP*Lace-Up%5E
undefined
因此,我认为window.location正在获得未定义的值.
关于为什么在使用console.log时为什么会得到两个值的任何想法?
更新资料
逻辑:
if (message[1] != "") {
$("#loginDialog").dialog("close");
loginConfig.redirectURL = message[1];
window.location = loginConfig.redirectURL
console.log('message: '+loginConfig.redirectURL);
}
配置对象:
var loginConfig = {
redirectURL: ""
}
进一步更新:
window.location可以在没有哈希的任何URL上使用.因此,由于某种原因,它不会加载任何带有哈希值的网址.
解决方法:
您的代码的这一部分无效:
var loginConfig = {
redirectURL = ""
}
必须是这样的:
var loginConfig = {
redirectURL: ""
}
如果这导致了错误,导致无法使用所需的属性正确声明loginConfig,则可能部分解释了某些意外行为.您当然应该在浏览器错误日志中查看并查看它是否报告任何错误.